2012-05-05 3 views
0

У меня возникла ошибка с ошибкой, написанной выше, и не удается найти точный способ ее исправить.Не могу понять, как исправить ошибку синтаксиса (отсутствующий оператор) в ошибке выражения запроса в C#

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

Точная ошибка ..

Синтаксическая ошибка (отсутствующий оператор) в выражении запроса 'как' @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

Что такое значение 'category'? Можете ли вы опубликовать полный SQL после его оценки? –

+0

значение категории изменилось в зависимости от выпадающего меню, однако для целей тестирования это «статус» и, конечно, как только я получу это, я опубликую решение – Raider00321

+0

Я имею в виду: «Отладка. WriteLine (sql); 'затем опубликуйте, что вы получаете. См. Здесь: http://support.microsoft.com/kb/815788 –

ответ

1

Параметр не может содержаться внутри строкового литерала SQL. Используйте конкатенацию, чтобы построить строку:

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

Update

кажется, что значение category был нулевым или пустым, создавая неверное заявление SQL:

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

Хорошо, я попытался использовать concat таким образом «Выберите счетчик (*) из [contractors $], где« + category + »like» + String.Concat ('%', name , '%') + "'", eh.Connection но не работает. как для снятия скобок, которые создали еще одну ошибку, кажется – Raider00321

+0

@ Raider00321: 'но не сработало' Пожалуйста, уточните. Каково было сообщение об ошибке? 'как для снятия скобок, которые создали еще одну ошибку". Опять же, пожалуйста, уточните. Каково было сообщение об ошибке? Кстати, вы уверены, что используете MySQL? –

+0

Точная ошибка: Ошибка синтаксиса (отсутствующий оператор) в выражении запроса «like» @name ». как раньше – Raider00321

 Смежные вопросы

  • Нет связанных вопросов^_^