Что не так с запросом MySQL в моем приложении?
У меня есть основная форма (formMain), которая загружает пользовательский элемент управления (классификация) в его событие загрузки. А в событии загрузки классификации пользовательского элемента управления он отображает сетку данных. Позвольте мне показать вам код. КЛАССИФИКАЦИЯ
string serverstring = "user id = root; password=; server=localhost; database=purchase_order; connection timeout=3;";
private void load_data()
{
MySqlConnection con = new MySqlConnection(serverstring);
try
{
string query = "SELECT * FROM tblclassification";
MySqlCommand cmd = new MySqlCommand(query, con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.DataMember = dt.TableName;
}
catch (Exception)
{
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
К счастью, это работает, но когда я нажимаю кнопку поиска, расположенную в другом пользовательском элементе управления (поиск), он вызывает событие в главной форме (formMain), где он должен ФИЛЬТРОВАТЬ сетку данных в пользовательском элементе управления (классификация), но мой код не работает. Возможно у меня есть синтаксическая ошибка в моем строковом запросе. Вот код
ОСНОВНАЯ ФОРМА
void SearchClicked(object sender, EventArgs e)
{
Search content = _searchbox;
classification control = new classification();
MySqlConnection con = new MySqlConnection(serverstring);
try
{
string query = "SELECT * FROM tblclassification WHERE class_name LIKE '%@search'";
MySqlCommand cmd = new MySqlCommand(query, con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
//MessageBox.Show(content.txtboxSearch.Text);
cmd.Parameters.AddWithValue("@search", content.txtboxSearch.Text);
DataTable dt = new DataTable();
da.Fill(dt);
control.dataGridView1.DataSource = dt;
control.dataGridView1.DataMember = dt.TableName;
}
catch (Exception)
{
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
2 ответа
Использование CONCAT()
string query = @"SELECT *
FROM tblclassification
WHERE class_name LIKE CONCAT('%', @search)";
MySqlCommand cmd = new MySqlCommand(query, con);
cmd.Parameters.AddWithValue("@search", content.txtboxSearch.Text);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
Пытаться
"ВЫБЕРИТЕ * ОТ БИБЛИОГРАФИИ. Классификация ГДЕ class_name
LIKE ('%@search%')";
или же..
"ВЫБРАТЬ ИЗ tblclassification
ГДЕ (class_name
LIKE "% @ search% ')"