Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的应用程序中的mySQL查询有什么问题?_C#_Mysql_Winforms - Fatal编程技术网

C# 我的应用程序中的mySQL查询有什么问题?

C# 我的应用程序中的mySQL查询有什么问题?,c#,mysql,winforms,C#,Mysql,Winforms,我有一个主窗体(formMain),它在加载事件中加载用户控件(分类)。在用户控件分类的加载事件中,它显示datagridview。让我给你看看代码。 分类 string serverstring = "user id = root; password=; server=localhost; database=purchase_order; connection timeout=3;"; private void load_data() {

我有一个主窗体(formMain),它在加载事件中加载用户控件(分类)。在用户控件分类的加载事件中,它显示datagridview。让我给你看看代码。 分类

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)中引发一个事件,其中它必须在用户控件(分类)中过滤datagridview,但我的代码不工作。 可能我的字符串查询中有语法错误。这是代码

主表单

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();
                }
            }    
        }
使用
CONCAT()

试一试

“从purchase_order.tbl分类中选择*,其中
class_name
LIKE('%@search%')”

或者


“从
tblclassification
WHERE(
class\u name
如“%@search%”)中选择*”

有一个空的Catch没有帮助。是否要查找以搜索文本结尾的class\u name?@Habib OK,在Catch中,显示错误消息是否更好?也许值得解释一下原因:-)我尝试了您的代码,但是仍然不起作用。它不过滤类名。请参阅我的更新答案。在将参数传递给DataAdapter类之前添加一个参数,或者您的意思是
其中类的名称,如CONCAT(“%”,@search,“%”)
相同的Sir。我的代码中有一点担心->
control.dataGridView1.DataSource=dt;control.dataGridView1.DataMember=dt.TableName,正确吗?@JW你把我揍了一顿:)是一样的,先生,它不过滤类名:(使用“@”字符的目的是什么,请尝试此格式,而不是查看编辑后的答案。)
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);