插入语句中的 OleDbException 语法错误
Posted
技术标签:
【中文标题】插入语句中的 OleDbException 语法错误【英文标题】:OleDbException syntax error in insert Statment 【发布时间】:2012-04-07 18:09:18 【问题描述】:static string connStrCheckData = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("test.xlsx") + ";Extended Properties=Excel 12.0;";
static string oledbConnCheckData = new OleDbConnection(connStrCheckData);
string adsName ="MagMall.com - subscription savings on 1,000's of magazines";
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into [sheet1$] ( [column1]) values ('" + adsName.ToString().Trim() + "')";
cmd.Connection = oledbConnCheckData;
oledbConnCheckData.Open();
cmd.ExecuteNonQuery();
oledbConnCheckData.Close();
Errro : 查询表达式中的语法错误(缺少运算符) ''MagMall.com - 订阅 1,000 种杂志可节省费用')'。
当我尝试插入:“MagMall.com - 1,000 份杂志的订阅节省”字样时出现上述错误。
【问题讨论】:
【参考方案1】:正如 juergen 所说,您必须避开单个撇号,购买一个额外的撇号:1,000's(不是 \')。双撇号是传递语句的正确方法。
【讨论】:
【参考方案2】:你必须像这样1,000\'s
转义1,000's
中的'
1,000\'s
【讨论】:
连字符“-”能否产生任何问题。并且 adsName 的值每次在循环中都会发生变化,那么我如何在变量中应用转义。 我确实喜欢 adsName.ToString().Trim().Replace("'", "\'") 但仍然报错。 @Shailesh:试试adsName.ToString().Trim().Replace("'", "\\'")
以上是关于插入语句中的 OleDbException 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)
带有更新查询的 OleDbCommand 导致 OleDbException
OleDbException:ORDER BY 子句中的语法错误