2015-07-28 196 views
3

我试图在VB6应用程序中执行查询。MySQL查询错误(ODBC 3.51)

这里是我的代码:

Dim con As ADODB.Connection 
Set con = New ADODB.Connection 
con.ConnectionString = "Driver={MySQL ODBC 3.51 Driver}; Server=***; Database=***; Username=***; Password=***; Option=3" 
con.Open 

Dim cmd As New ADODB.Command 
With cmd 
    .ActiveConnection = con 
    .CommandText = "SELECT COD_CONFIG FROM FDT_CONFIG" 
    .CommandType = adCmdText 
End With 

Dim rs As New ADODB.Recordset 
rs.CursorLocation = adUseClient 
rs.Open cmd, , adOpenStatic, adLockOptimistic 

我已经隐藏在连接字符串中,但在我的应用我用正确的价值观的一些信息。

我可以成功地打开连接,但是当我尝试执行查询,我得到:

“执行错误‘2147467259(800004005)’:未指定的错误”

谁能告诉我,我哪里去错了?

回答

1

如果你想分配Command对象的ActiveConnection到现有Connection对象,你必须使用Set

With cmd 
    Set .ActiveConnection = con 
    .... 
End With 

这是一个有点混乱,因为你也可以将字符串分配给ActiveConnection财产和ADO将为您创建一个特别连接。在这种情况下,你不会使用Set,因为你只是分配一个值的本征型(字符串):

With cmd 
    .ActiveConnection = "Driver={MySQL ODBC 3.51 Driver}; Server=***; Database=***; Username=***; Password=***; Option=3" 
    ... 
End With 

所以可以使用属性的多个方面。但是,在您的场景中,由于您要分配对象引用,因此您需要使用Set关键字。

+0

我尝试了你的两个解决方案,我得到了同样的错误。我已经尝试了与本地MySQL数据库相同的代码,并且我没有收到任何错误,我认为这是VB6和我尝试使用的旧MySQL数据库之间的问题。 – ctbs1