0

我遇到了上面写的错误的问题,找不到修复它的确切方法。

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();

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

4

1 回答 1

1

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

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

更新

似乎 的值为categorynull 或为空,创建了无效的 SQL 语句:

 Select count(*) from [contractors$] where like '@name'
                                         ^^^ no category here
于 2012-05-05T17:16:26.313 回答