INSERT INTO 语句中的 OleDbException 语法错误
OleDbException syntax error in INSERT INTO statement
我正在使用 OleDbCommandBuilder
构建 SQL INSERT 命令
adapter.InsertCommand = builder.GetInsertCommand();
我尝试在这一行向数据库添加数据时遇到异常:
adapter.Update(ds, tableName);
和异常:
System.Data.OleDb.OleDbException: 'Syntax error in INSERT INTO
statement.'
我在这一行设置了断点,发现插入命令的语法是正确的:
INSERT INTO order (orderid, employeeid, dateestimated, datearrived) VALUES (?, ?, ?, ?)
并且参数也正确:0x1、0x2、13/10/2017、null
为什么我的语法明明是正确的,参数也正确,却出现语法错误异常?
异常来源为 Microsoft Access 数据库引擎。
您已致电 table order
。这是保留的 MS-Access/SQL 关键字。尝试将您的 table 重命名为 orders
或其他名称。或者尝试添加 [...]
使其成为 [order]
如果您可以控制生成的 SQL 语句。
您可以在此处找到 MS-Access 保留关键字的完整列表:https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE
一般规则是尽量避免使用这些词来命名 tables/columns。但是,如果您绝对需要,可以在列名周围使用 [
和 ]
符号来转义它。
我正在使用 OleDbCommandBuilder
构建 SQL INSERT 命令adapter.InsertCommand = builder.GetInsertCommand();
我尝试在这一行向数据库添加数据时遇到异常:
adapter.Update(ds, tableName);
和异常:
System.Data.OleDb.OleDbException: 'Syntax error in INSERT INTO statement.'
我在这一行设置了断点,发现插入命令的语法是正确的:
INSERT INTO order (orderid, employeeid, dateestimated, datearrived) VALUES (?, ?, ?, ?)
并且参数也正确:0x1、0x2、13/10/2017、null
为什么我的语法明明是正确的,参数也正确,却出现语法错误异常?
异常来源为 Microsoft Access 数据库引擎。
您已致电 table order
。这是保留的 MS-Access/SQL 关键字。尝试将您的 table 重命名为 orders
或其他名称。或者尝试添加 [...]
使其成为 [order]
如果您可以控制生成的 SQL 语句。
您可以在此处找到 MS-Access 保留关键字的完整列表:https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE
一般规则是尽量避免使用这些词来命名 tables/columns。但是,如果您绝对需要,可以在列名周围使用 [
和 ]
符号来转义它。