我正在尝试将数据从 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 不返回记录集。使用 oConn.Execute 进行这种插入。
另一个选项可能是这个特定版本的 mysql 驱动程序不支持 adOpenDynamic(你确定你需要它吗?)或 adLockOptimistic(相同)。
但无论如何,这段代码是一个sql injection洞。您应该考虑使用参数化查询:
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
关于sql - 从 excel : ODBC driver does not support the requested properties 连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2821917/