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