错误3001 VBA ExcelmacrosMySQL插入

我试图使用Excelmacros在MySQL数据库中插入一行。 连接似乎工作正常,但我得到一个vba 3001错误

(Microsoft Visual Basic 3001参数的types错误,或者超出了可接受的范围,或者相互冲突)

当你执行这个代码时:

Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ConnectDB 'strSQL = "INSERT INTO talar.ots (UbicacionTecnica, Equipo, Posmant) VALUES ('sdasd', 'sdasd','sdasd')" rs.Open strSQL, oConn, adOpenDynamic, adLockOptimistic 

我已经阅读和尝试不同的东西,在这个网页上的50个教程和其他post,所有不好的结果….

这是连接的代码:

  Private Sub ConnectDB() Dim oConn As ADODB.Connection Set oConn = New ADODB.Connection oConn.Open "DRIVER={MySQL ODBC 5.2 Unicode Driver};" & _ "SERVER=localhost;" & _ "DATABASE=talar;" & _ "USER=root;" & _ "PASSWORD=root;" & _ "Option=3" End Sub 

MySQL的ODBC 5.2 Unicode驱动程序安装,MySQL服务运行良好,我正在使用Excel 2010,Windows 7的。我不知道这个信息是否足够。 任何人有任何想法? 谢谢!

oConn对于ConnectDB子系统是本地的 ,所以你没有向logging集Open传递任何东西。

Option Explicit添加到代码文件的顶部,以便在执行此类操作时收到警告。

创build一个返回连接的函数:

 Private Function ConnectDB() As ADODB.Connection Set ConnectDB = New ADODB.Connection ConnectDB.Open "DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=localhost;DATABASE=talar;USER=root;PASSWORD=root;Option=3" End Function 

然后

 dim cn as ADODB.Connection set cn = ConnectDB() cn.Execute "INSERT INTO talar.ots (UbicacionTecnica, Equipo, Posmant) VALUES ('sdasd', 'sdasd','sdasd')" cn.Close 

你不需要一个插入Recordset ,因为没有行将被返回。

当你确实需要Recordset adOpenForwardOnly, adLockReadOnlyadOpenDynamic, adLockOptimistic更好adOpenDynamic, adLockOptimistic除非你特别需要后者提供的function。