Что не так с запросом 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% ')"

Другие вопросы по тегам