У меня есть столбец с именем ast_code
выберите запрос, где положение с более чем 1 значение
, который я уже получен в string
переменной. Я пытаюсь запустить запрос select
с использованием предложения where
на основе строкового значения, которое я сохранил в этой переменной.
Вот код, который я попробовал:
public void grid()
{
datatable dt = new datatable();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand command = new SqlCommand();
try
{
command.Connection = myConnection;
command.CommandText = "SELECT code, name from table.menu where code <> '"+ ast_code + "'";
adapter.SelectCommand = command;
adapter.Fill(ds);
adapter.Fill(dt);
myConnection.Open();
}
catch(Exception ex)
{
MessageBox.Show("error" + ex);
}
myConnection.Close();
gridControl1.DataSource = dt;
}
Когда я запускал запрос, он не дал никаких результатов, если значение в строковой переменной только не содержит одно значение (например, 0110300
).
Затем я попытался преобразовать содержимое переменной:
ast_code = a.Replace(';',',').Replace(' ','\'');
но возвратил ошибку из-за отсутствующего '
. Не против a
; это значение переменной синтаксического анализа. Я уже пытался сохранить их в list
, но это тоже не работает.
Что мне нужно сделать, это сгенерировать предложение where
, которое может обрабатывать несколько значений.
UPDATE
IAM с помощью @ rbr94 предложения ast_code = a.Replace("; ", "', '");
command.CommandText = "SELECT code, name from table.menu where code not in '"+ ast_code + "'";
это работает, когда IAM используя верхний string value
, но для второй строки `значение строк дает мне ошибку
Привет, я бы посоветовал использовать параметризованные запросы. http://stackoverflow.com/questions/35163361/how-can-i-add-user-supplied-input-to-an-sql-statement – xszaboj
@xszaboj, если я использую параметризованное, только 1 значение, а также нужно поставить он вручную через код .. – chopperfield