我遇到上述错误的问题,无法找到解决问题的确切方法。
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();
但我仍然遇到同样的错误。
答案 0 :(得分:1)
参数不能包含在SQL字符串文字中。使用串联来构建字符串:
"... LIKE ('%' + @name + '%') ..."
<强>更新强>
似乎category
的值为null或为空,从而创建了无效的SQL语句:
Select count(*) from [contractors$] where like '@name'
^^^ no category here