从excel连接到mysql:ODBC驱动程序不支持所请求的属性

我想从Excel中添加数据到MySQL。 我得到这一行上面的错误:rs.Open strSQL,oConn,adOpenDynamic,adLockOptimistic

这里是我的代码:

Dim oConn As ADODB.Connection Private Sub ConnectDB() Set oConn = New ADODB.Connection oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ "SERVER=localhost;" & _ "DATABASE=employees;" & _ "USER=root;" & _ "PASSWORD=some_pass;" & _ "Option=3" End Sub Function esc(txt As String) esc = Trim(Replace(txt, "'", "\'")) End Function Private Sub InsertData() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ConnectDB With wsBooks For rowCursor = 2 To 11 strSQL = "INSERT INTO tutorial (author, title, price) " & _ "VALUES ('" & esc(.Cells(rowCursor, 1)) & "', " & _ "'" & esc(.Cells(rowCursor, 2)) & "', " & _ esc(.Cells(rowCursor, 3)) & ")" rs.Open strSQL, oConn, adOpenDynamic, adLockOptimistic Next End With End Sub 

什么错误rs.Open strSQL,oConn,adOpenDynamic,adLockOptimistic? 为什么我得到odbc错误?

INSERT不会返回logging集。 使用oConn.Execute来做这种插入。

另一种select可能是这个特定的版本的MySQL驱动程序不支持adOpenDynamic(你确定你需要它?)或adLockOptimistic(相同)。

但无论如何,这个代码是一个SQL注入漏洞。 您应该考虑使用参数化查询:

 dim cm as adodb.command set cm=new adodb.command set cm.activeconnection = oConn cm.commandtype = adcmdtext cm.commandtext = "insert tutorial (author, title, price) values (?,?,?)" cm.parameters.add cm.createparameter(,adVarChar,adParamInput,50,esc(.Cells(rowCursor, 1))) cm.parameters.add cm.createparameter(,adVarChar,adParamInput,50,esc(.Cells(rowCursor, 2))) cm.parameters.add cm.createparameter(,adDouble,adParamInput,,esc(.Cells(rowCursor, 3))) cm.execute ,, adExecuteNoRecords