一尘不染

单个ODBC ExecuteNonQuery(C#)中的多个插入语句

mysql

我正在向数据库中插入多行,并将它们连接在一起以提高性能。我收到一个ODBCException告诉我我的SQL语法错误。但是,当我在mysql命令行客户端中尝试它时,它就可以正常工作。我运行了一个简化的测试来描述该过程。

命令行客户端:

mysql> create table test (`id` int, `name` text);
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO test(id, name) VALUES ('1', 'Foo');INSERT INTO test(id, name) VALUES ('2', 'bar');
Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

mysql>

之后,我在同一数据库上运行了此代码:

comm.CommandText = "INSERT INTO test(id, name) VALUES ('1', 'Foo');INSERT INTO test(id, name) VALUES ('2', 'bar');";
comm.ExecuteNonQuery();

这给了我以下错误:

+       base    {"ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.1.51-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO test(id, name) VALUES ('2', 'bar')' at line 1"} System.Data.Common.DbException {System.Data.Odbc.OdbcException}

阅读 287

收藏
2020-05-17

共1个答案

一尘不染

是的,ODBC不支持批处理。 (编辑:有关最新解决方案,请参见@ Jean-Do的答案。)

但是还有另一种选择:

  1. 使用MySQL .NET连接器而不是ODBC。
  2. 然后使用MySQL备用INSERT语句:INSERT INTO test(id, name) VALUES ('1', 'Foo'), ('2', 'bar');
2020-05-17