查询拼接SQL语句,多条件模糊查询
多条件查询,使用stringbuilder拼接sql语句,效果如下:
当点击按钮时代码如下:
private void button1_click(object sender, eventargs e)
{
//假设表名:books
//列名:booksname(图书名称) author(作者) press(出版社)
//多条件查询,要根据用户输入的内容来动态拼接sql语句
//1.假设如果用户没有输入就查询所有信息
stringbuilder builder = new stringbuilder("select * from books ");
//在wheres集合中保存所有查询的sql语句
list<string> wheres = new list<string>();
//把参数也放到集合中
list<sqlparameter> sqlparameters = new list<sqlparameter>();
//2.如果用户输入了条件,则根据用户输入的条件动态拼接sql语句
if (txtbookname.text.trim().length>0)
{
//builder.append(" booksname like @btname");
wheres.add(" booksname like @btname");
sqlparameters.add(new sqlparameter("@btname", sqldbtype.nvarchar, 100){ value="%"+ txtbookname.text.trim()+"%" });
}
if (txtauthor.text.trim().length>0)
{
//builder.append(" author like @author");
wheres.add(" author like @author");
sqlparameters.add(new sqlparameter("@author", sqldbtype.nvarchar, 100) { value = "%" + txtauthor.text.trim() + "%" });
}
if (txtpress.text.trim().length>0)
{
//builder.append(" press like @press");
wheres.add(" press like @press");
sqlparameters.add(new sqlparameter("@press", sqldbtype.nvarchar, 100) { value = "%" + txtpress.text.trim() + "%" });
}
//拼接sql语句
//如果wheres中的集合当中的数据大于0,证明用户输入了条件
if (wheres.count>0)
{
builder.append(" where ");//只要有查询条件就拼接一个where条件
builder.append(string.join(" and ", wheres));//然后把后面的条件拼接起来
}
sqlparameter[] parameters = sqlparameters.toarray();
messagebox.show(builder.tostring());
//sqlhelper.executereader(builder.tostring(),parameters);
}