SQL 语句末尾的字符--Access 数据库

Posted

技术标签:

【中文标题】SQL 语句末尾的字符--Access 数据库【英文标题】:Characters Found at the end of SQL Statement -- Access Database 【发布时间】:2016-05-24 14:08:51 【问题描述】:

我正在使用具有访问数据库的 Windows 应用程序。我正在使用OleDbTransaction 和其他类插入记录。 当我运行我的代码时,我收到错误消息:

SQL 语句末尾的字符

我在一个事务中插入 10 条记录。它不允许我在单个事务中插入同一个表的多个插入语句。在访问中我们不能使用同一张表的多个插入语句有什么缺点吗?

下面是我的代码块:

strQueries 是一个字典,其中包含由分号(;)分隔的插入语句的集合

oleDbTran = accessDbConnection.BeginTransaction();
cmdReturnValue.Transaction = oleDbTran;
foreach (var query in strQueries)

    cmdReturnValue.CommandText = query.Value.ToString();
    cmdReturnValue.ExecuteNonQuery();


oleDbTran.Commit();

【问题讨论】:

如果您需要我们的帮助,您真的应该发布您的 SQL 语句 如果我没记错的话,Access 将您限制为每次调用一个语句。要对此进行测试,您可以尝试直接在 Access 数据库中运行一些 INSERT(即使用 MS Access)。 为什么不在一个插入语句中将 10 行插入到同一个表中? INSERT INTO TABLE(...) VALUES (...), (...), (...) 谢谢大家。非常感谢您的回复。 @ Juharr,你能给我提供一个相同的查询示例吗? 您的代码是否使用 2 个 INSERT 语句而不是 10 个语句?如果不是,请向我们展示这 2 个语句中的文本。 【参考方案1】:

INSERT INTO TABLE(...) 值 (...), (...), (...)

不是可接受的 Access (Jet) SQL 语法。它是什么,mysql?反正。如果您需要此语法,因为您已使用支持此语法的 ODBC 将前端(Access 应用程序)连接到后端(包含您的数据的数据库),您可以考虑使用pass-through queries。 Access 不会试图解释这些;相反,它将按原样发送到后端。

【讨论】:

以上是关于SQL 语句末尾的字符--Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入原理 手工注入access数据库

来自 Access 的 Excel VBA SQL 没有结果

SQL语句如何查询ACCESS数据库中某一字符串字段长度等于某个值的所有记录?

SQL语句VBA代码Access 2007结束后发现的字符

数据分析---SQL(Access数据库)

针对 Access 2010 DB 的 SQL 语句不适用于 ODBC