Параметризованный запрос с %

У меня есть оператор выбора

command.commandText = "SELECT FIRSTNAME, LASTNAME FROM MYTABLE" +
                      " WHERE STATE LIKE @STATE + '%';";

Это дает мне ошибку "'"

я попробовал этот

command.commandText = "SELECT FIRSTNAME, LASTNAME FROM MYTABLE" +
                      " WHERE STATE LIKE @STATE" + "'%';";

Это дает мне ошибку "%"... Как правильно


person EagleFox    schedule 12.12.2012    source источник
comment
небольшой совет: никогда не используйте конкатенацию строк в sql-запросах;)   -  person MUG4N    schedule 12.12.2012
comment
конечно MUG4N... какие еще варианты   -  person EagleFox    schedule 12.12.2012
comment
понял это, сэр... спасибо   -  person EagleFox    schedule 12.12.2012
comment
см. сообщение Burgos: используйте класс Parameter!   -  person MUG4N    schedule 12.12.2012


Ответы (2)


Вы должны добавить % в фактическое значение параметра, а не в запрос:

command.commandText = "SELECT FIRSTNAME, LASTNAME FROM MYTABLE WHERE STATE LIKE @STATE";
command.Parameters.AddWithValue("STATE", "CALI%");

Если у вас есть какое-то значение, сохраненное, например, в строке valState, просто добавьте % в AddWithValue:

string valState = "Cali";
// ...
command.Parameters.AddWithValue("STATE", valState + "%");
person Nemanja Boric    schedule 12.12.2012
comment
Спасибо, Бургос... СОСТОЯНИЕ - это параметр... Я не могу его жестко закодировать - person EagleFox; 12.12.2012
comment
Обновленный ответ должен помочь, если я понимаю, о чем вы спрашиваете. Если нет, можете ли вы обновить свой вопрос? - person Nemanja Boric; 12.12.2012
comment
Нет проблем! Рад, что помог! - person Nemanja Boric; 12.12.2012

Попробуйте вместо этого поместить % в строку, которую вы связываете

stateStr += "%";

Затем привяжите stateStr

person Nick Rolando    schedule 12.12.2012
comment
Спасибо, Шредер... но значение STATE является параметром, поэтому я не хочу хардкодить - person EagleFox; 12.12.2012
comment
Таким образом, вы можете добавить % к параметру состояния, как я сделал в своем редактировании. Или добавьте его в фактический оператор привязки, как это сделал Бургос в своем редактировании. Это то, что вы имели ввиду? - person Nick Rolando; 12.12.2012