Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 打开有密码的连接:运行时错误'-2147221241(80040107)自动化错误未指定错误_Mysql_Excel_Vba - Fatal编程技术网

Mysql 打开有密码的连接:运行时错误'-2147221241(80040107)自动化错误未指定错误

Mysql 打开有密码的连接:运行时错误'-2147221241(80040107)自动化错误未指定错误,mysql,excel,vba,Mysql,Excel,Vba,我有一个数据库托管在AWS RDS-MySQL数据库上,我试图通过点击按钮,使用VBA将数据从Excel推送到数据库中 Private子命令按钮1\u单击() Dim con作为ADODB连接 Set con=New ADODB.Connection con.Open“Driver={MySQL ODBC 5.2.2 Driver};”和_ “服务器=工作表自动化。***************.rds.amazonaws.com;”_ “数据库=工作表;”&_ “用户=****;”和_ “密码

我有一个数据库托管在AWS RDS-MySQL数据库上,我试图通过点击按钮,使用VBA将数据从Excel推送到数据库中

Private子命令按钮1\u单击()
Dim con作为ADODB连接
Set con=New ADODB.Connection
con.Open“Driver={MySQL ODBC 5.2.2 Driver};”和_
“服务器=工作表自动化。***************.rds.amazonaws.com;”_
“数据库=工作表;”&_
“用户=****;”和_
“密码=****;”
“选项=3;”
变暗rng As范围
设置rng=应用程序范围(“EXP”)
暗行作为范围
对于rng.行中的每一行
Sql=“在TestExperiment(实验id、实验名称、实验方法、实验分析员、实验样本)中插入值(“&row.Cells(1).Value&“,”&row.Cells(1).Value&“,”,“&row.Cells(2).Value&“,”,“&row.Cells(3).Value&“,”&row.Cells(5).Value&“)
con.执行Sql
下一排
结案
MsgBox“完成”
端接头
我正在尝试执行此代码并出现运行时错误,当我尝试调试代码时:

运行时错误'-2147221241(80040107)

con.Open“Driver={MySQL ODBC 5.2.2 Driver};”_
“服务器=工作表自动化。***************.rds.amazonaws.com;”_
“数据库=工作表;”&_
“用户=****;”和_
“密码=****;”
“选项=3;”

此部分用黄色标记,密码行上有一个箭头。

请考虑VBA中的以下最佳实践:

  • 在代码更改后始终
    Debug\Compile
    代码。事实上,VBA应该在光标离开问题行时立即提出或突出显示或红色字母标记行继续的语法问题。请参见下面添加的
    &
    。但这可能是你文章中的一个输入错误

    "Password=****;"  & _
    "Option=3;"
    
  • 特别是在与ADO之类的API交互时,如果这些API可以引发运行时异常以获取更多信息,请使用适当的方法:

    Private子命令按钮1\u单击()
    关于错误转到错误句柄
    “……代码。。。
    出口:
    Set con=Nothing'释放所有集合对象
    出口接头
    错误句柄:
    Msgbox错误号&“:”&错误说明
    复出
    端接头
    
  • 在应用层(即VBA)和数据库(即MySQL)之间导入数据时,请使用SQL参数化的行业最佳实践标准。其中一个原因是,由于避免了混乱的引用和连接,它更高效、可读性和可维护性。事实上,您当前的代码遗漏了最后一个报价:

    “…”&row.Cells(3.Value&“,”&row.Cells(5.Value&“)
    
    大多数数据库API都支持ADO。尽管实现将不同于VBA对其他语言的实现,也不同于MySQL对其他数据库的实现,但核心概念是相同的,它涉及一个带有参数占位符的准备语句,这些参数占位符稍后将与文本值绑定。考虑以下调整:

    Dim con作为ADODB.Connection,cmd作为ADODB.Command
    变暗rng作为范围,行作为范围
    Set con=New ADODB.Connection
    打开。。。
    '准备好的报表(无数据)
    sqlStr=“插入到TestExperiment(实验id、实验名称、实验方法,”_
    “实验分析员,实验样本”&_
    “值(?,,?,?,?)”
    '遍历行
    对于Application.Range(“EXP”)行中的每一行
    Set cmd=New ADODB.Command
    使用cmd
    .ActiveConnection=con
    .CommandType=adCmdText
    .CommandText=sqlStr
    “绑定参数
    .Parameters.Append.CreateParameter(“id_param”,adVarChar,adParamInput,255,row.Cells(1).Value)
    .Parameters.Append.CreateParameter(“name_param”,adVarChar,adParamInput,255,row.Cells(2).Value)
    .Parameters.Append.CreateParameter(“方法参数”,adVarChar,adParamInput,255,行.单元格(3).Value)
    .Parameters.Append.CreateParameter(“analyst_param”,adVarChar,adParamInput,255,row.Cells(4).Value)
    .Parameters.Append.CreateParameter(“sample_param”,adVarChar,adParamInput,255,row.Cells(5).Value)
    "执行行动"
    .执行
    以
    Set cmd=Nothing
    下一排
    

  • 看看这个,您需要指定选项吗?尝试写入选项,但仍然有相同的错误。谢谢。你错过了从第二行到最后一行的连接和换行。谢谢你提供的所有信息!这对我将来一定有帮助!