мне нужно искать таблицы в combobox1
с текстом пользователь будет входить в autoCompleteTextbox1
, и это может быть itemcode
или itemname
C# текстового поля автозаполнения из таблицы SQL
, но я получаю ошибку говорит:
Дополнительная информация: Имя переменной «@name» уже объявлено . Имена переменных должны быть уникальными в рамках пакета запросов или хранимой процедуры.
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
cm.Connection = cn;
if (autoCompleteTextbox1.Text == "")
{
}
else
{
AutoCompleteStringCollection namecollection = new AutoCompleteStringCollection();
string searchFor = "%" + autoCompleteTextbox1.Text + "%"; //the string the user entered.
string tableName = comboBox1.Text;
cm.CommandText = @"SELECT distinct(itmcode+''+itmname) AS name FROM " + tableName + " WHERE itmcode Like @name OR itmname LIKE @name";
cm.Parameters.AddWithValue("@name", searchFor);
SqlDataReader rea = cm.ExecuteReader();
if (rea.HasRows == true)
{
while (rea.Read())
namecollection.Add(rea["name"].ToString());
}
rea.Close();
autoCompleteTextbox1.AutoCompleteMode = AutoCompleteMode.Suggest;
autoCompleteTextbox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
autoCompleteTextbox1.AutoCompleteCustomSource = namecollection;
что ошибка в моем коде, и как это исправить плз
спасибо за ответ, и мне нужно спросить у как переинициализировать команды каждый раз? – user5456980
моя проблема в том, что я хочу использовать параметры из-за sql-инъекции. – user5456980
теперь работает, но одна проблема осталась :) ..данные появляются в автозаполнении, это данные в 2 столбцах, объединенные рядом друг с другом, но я хотел показать совпадения того, что я ввел. В текстовом поле означает, что если я ввел значение, которое было найдено в столбце itmcode, отображаются только результаты в столбце itmcode и если я ввожу значение, найденное в столбце itmname, оно отображает только имена – user5456980