无法弄清楚如何修复C#中查询表达式错误中的语法错误(缺少运算符)

时间:2012-05-05 17:14:01

标签: c# oledbcommand oledbdataadapter

我遇到上述错误的问题,无法找到解决问题的确切方法。

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("Select count(*) from [contractors$] where " + category + " like '*@name*'", eh.Connection);
dataAdapter.SelectCommand.Parameters.Add("@name", OleDbType.VarChar).Value = "*" + name + "*";
OleDbCommand command = dataAdapter.SelectCommand;
OleDbDataReader reader = command.ExecuteReader();

确切的错误是..

  

查询表达式中的语法错误(缺少运算符)'like' @name ''。

我也已经找到了解决这个问题的方法,并尝试对它们进行调整以试图让这项工作正常运行,但没有运气(以上是尝试之一)

提前多多谢谢!

好的,我现在已将代码更改为此..

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("Select count(*) from `contractors$` where " + category + " LIKE @name", eh.Connection);
dataAdapter.SelectCommand.Parameters.Add("@name", OleDbType.VarChar).Value = "%" + name + "%";
OleDbCommand command = dataAdapter.SelectCommand;
OleDbDataReader reader = command.ExecuteReader();

但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

参数不能包含在SQL字符串文字中。使用串联来构建字符串:

"... LIKE ('%' + @name + '%') ..."

<强>更新

似乎category的值为null或为空,从而创建了无效的SQL语句:

 Select count(*) from [contractors$] where like '@name'
                                         ^^^ no category here