VBA ADODB多行插入不起作用

时间:2014-08-25 14:25:32

标签: excel vba excel-vba adodb

我试图弄清楚如何在VBA excel中使用ADODB进行多行插入。 我的问题似乎是我无法弄清楚用于这个简单任务的正确语法,即使在搜索之后我仍然迷失了为什么它不起作用。

使用语句

执行单个插入操作没有问题
INSERT INTO test.dbf ('field1','field3') VALUES ('test1','test11')

但是一旦我尝试

INSERT INTO test.dbf ('field1','field3') VALUES ('test1','test11'), ('test2','test22')

它给我以下错误

[Microsoft][ODBC dBase Driver] Missing semicolon (;) at end of SQL statement.

我当然尝试在语句的末尾添加分号并且根本没有帮助,我也尝试运行语句而没有指定列,但都无济于事。

关于我做错了什么的任何建议?我想避免做8,000个单独插入。

提前致谢

1 个答案:

答案 0 :(得分:0)

多行插入的SQL语法比ADODB / ODBC接口更新,因此它们的SQL解析器无法识别它。因此,您的选择是:

  1. 使用VBA将其指定为pass-thru查询。只要您执行的DBMS识别出新的插入语法,这应该可以工作。但是,如果您的插入内容基于用户输入,那么您几乎肯定会将数据库暴露给注入,这具有明显的缺点。 (注意:这与pass-thru无关,而是与您使用字符串组合进行插入而不是使用ADODB表对象这一事实。)

  2. 只需使用VBA / ADODB表对象插入多行。这不会在引擎盖下使用较新的多行插入SQL语法,但仍然可以正常工作。尝试利用多行语法的唯一原因是,如果您遇到性能问题,并且还有许多其他性能选项可用。