我通过C#OleDbCommand将插入查询运行到Access后端表时遇到问题.如果您复制它并直接在Access中运行它,SQL运行正常,并且在点击此特定条目之前它适用于其他数据.
我试过改变数据,没有成功.这个源是一个XML文件.正确加载XML数据.
失败的命令是dbCommand.ExecuteNonQuery(),错误"INSERT INTO语句中的语法错误".
dbCommand = new OleDbCommand(string.Format(INSERT_RECURRING, tableName, fieldList, valueList), dbCon);
dbCommand.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
尝试运行和失败的SQL如下所示.请注意,表和字段名称是从XML源文件生成的,因此是大写和下划线.
INSERT INTO LIST_CONTACTSGP (RID, CONTACT_TYPE, SURNAME_OR_FAMILY_NAME, GIVEN_NAMES, ORGANISATION, ADDRESS_GP, PHONE, MOBILE, WORK, FAX, EMAIL, COMMENTS) VALUES ('1-8HZAZN', 'Daughter, Other Emergency Contact', 'Smith', 'Ms Jenny', '', '', '49123456', '0416123456', '', '', '', '');
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,这个SQL在Access中运行时没有失败,并且其他插入命令在此失败之前工作正常(在其他表上).我删除了可能导致问题的所有SQL特殊字符.
任何帮助将不胜感激.
根据要求,堆栈跟踪的副本:
System.Data.OleDb.OleDbException was unhandled
Message=Syntax error in INSERT INTO statement.
Source=Microsoft Office Access Database Engine
ErrorCode=-2147217900
StackTrace:
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& …Run Code Online (Sandbox Code Playgroud)