sql - 从 excel : ODBC driver does not support the requested properties 连接到 mysql

标签 sql mysql excel vba 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 不返回记录集。使用 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/

相关文章:

php - 将数据信息存储在 SESSION 中而不是使用 MySQL 查询?

asp.net - 从 Excel 导入数据集时为列值插入 NULL

Excel - 基于选择创建图表的宏

php - 这个javascript函数可以放入ajax中吗?如何?

vba - 从 word-vba 中找出 excel 是否处于编辑模式

php - 如何从 sql 到 php 操作行集数据

sql - 获取游戏计数并显示玩了一半游戏的玩家

php - 有什么方法可以简化 linux 和 windows 的 php 应用程序的安装?

sql - 处理 SQL FILESTREAM 数据损坏和备份

mysql - 具有唯一约束的原子多行更新