我正在使用OleDbConnection将一些数据写入电子表格。这些数据的几列包括XML(不是XML中的数据,而是XML本身)。但是,当我尝试使用ExecuteNonQuery()插入时,我收到以下OleDbException:查询表达式中的语法错误(缺少运算符)'“”'
最近,我尝试过像
这样的东西...
command.CommandText = "INSERT INTO (Column1) VALUES(""<MyElement name="Name"/>"")";
这样做。好像围绕“名字”的引号似乎正在抛弃一切。
提前感谢您的帮助。
答案 0 :(得分:0)
您必须使用转义字符将引号字符表示为文字引用而不是操作。它可能会变得棘手,因为C#中存在转义字符,并且SQL中的转义字符也是如此。
例如,在C#中,要将“字符传递给文字字符串,您需要使用:
string quoted = "\"Quoted String\"";
评估字符串引用将返回“Quoted String”(包括引号)
这将允许您将引号传递给SQL命令。但是,除非您使用转义序列,否则SQL会将它们视为引号运算符,而不是引号文字:
""Quoted String""
因此,对于要在SQL语句中用作文字的一部分的每个引号字符,必须输入两次字符。
假设您的SQL实现上的“字符是一组双引号”的转义序列,请尝试使用以下内容:
command.CommandText = "INSERT INTO (Column1) VALUES(\"<MyElement name=\"\"Name\"\"/>\")";