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