C# 我的应用程序中的mySQL查询有什么问题?
我有一个主窗体(formMain),它在加载事件中加载用户控件(分类)。在用户控件分类的加载事件中,它显示datagridview。让我给你看看代码。 分类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() {
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);