你好!我想在mysql中搜索数据时忽略空文本框。
private void button4_Click(object sender, EventArgs e)
{con.Open();
MySql.Command mycommand (SELECT * FROM table WHERE " +
"Name Like '" + textbox1.Text + "'" +
"Nachname Like '" + textbox2.Text + "'" +
"Alter Like '" + textbox3.Text + "'",
con);
read = mycommand.ExecuteReader();
dt.Load(read);
datagridView.DataSource = dt;
con.Close();}
1条答案
按热度按时间m0rkklqb1#
有很多方法可以做到这一点,但理想情况下,您应该使用参数化查询,而不是搜索值的字符串串联;第二个人说他们正在搜索像“o'reilly”这样的名字,你的查询就失败了(请参阅谷歌的“博比下降表”)。
但是,既然您使用的是字符串连接,为什么不在构建查询时检查字段的值是否为空呢?
或者,使用如下参数化查询:
这种用法:
最好的解决方案可能是基于相关文本框构造一个参数化查询,该查询只包含相关文本框的参数。
Name LIKE @p1
可以比(@p1 = '' OR Name LIKE @p1)
; mysql优化器可以根据@p1
值,但它仍可能损害优化此类查询的其他方式。