Я уже задал этот вопрос, потому что у меня были проблемы с оператором «LIKE», но теперь я понял, что есть проблемы с параметризованными операторами вообще. Вот мой код:Параметрированные SQL-запросы не работают
, например, когда я пишу:
sqlCmd = new SqlCommand(@"SELECT @cusId,@cusName FROM " + form1.getTable() + " WHERE @cusId LIKE @filter", connection);
sqlCmd.Parameters.AddWithValue("cusId", form1.cusId.Text);
sqlCmd.Parameters.AddWithValue("cusName", form1.cusName.Text);
sqlCmd.Parameters.AddWithValue("filter", form1.filterType().Trim() + "%");
sqlDatAdapter = new SqlDataAdapter(sqlCmd.CommandText, connection);
sqlDatAdapter.Fill(datTable);
form1.setDataGrid = datTable;
Как-то я всегда получаю
"Must declare the scalar variable @..."
для каждой переменной, когда я заполнить таблицу данных. Я попробовал, что уже с
sqlCmd.ExecuteNonQuery();
и, кажется, работает в этом случае (при обновлении базы данных она работает отлично), но мне нужно, чтобы связать значения моей DataGridView.
EDIT: Даже когда я просто пытаюсь написать что-то вроде:
... WHERE cusId.Text = @cusId
я получаю ту же ошибку
Являются ли ваши имена столбцов 'cusId' и' cusName' или вы пытаетесь их параметризовать? –
Это имена столбцов, но даже когда я их оставляю и просто использую переменную фильтра по-разному, я получаю ту же ошибку –
. Что означает 'form1.filterType(). Trim()' точно возвращается? –