欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

查询拼接SQL语句,多条件模糊查询

程序员文章站 2022-04-18 15:22:38
多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e) { //假设表名:Books //列名:BooksName(图书名称) Author(作者) P ......

多条件查询,使用stringbuilder拼接sql语句,效果如下:

查询拼接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);
}