多条件搜索问题-sql拼接与参数化查询
来源:传智播客免费开发视频。
问题:根据书名或出版社或作者查询书籍信息。
using System;
using System.Collections.Generic问题;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
queryselectorall用法
using System.Data.SqlClient;
namespace _01多条件搜索问题
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/
/假设表名:Books
//列名:BookName(书名)、Author(作者)、Pub(出版社)
//多条件查询,要根据⽤户输⼊的内容来动态拼接SQL语句。
//1.假设如果⽤户没有输⼊任何条件,那么就查询出所有的记录
StringBuilder sbSQL = new StringBuilder("select * from Books ");
//在wheres集合中保存查询的sql条件
List<string> wheres = new List<string>();
//把参数也放到⼀个集合当中
List<SqlParameter> listParameters = new List<SqlParameter>();
//2.如果⽤户输⼊了条件,则根据⽤户输⼊的条件动态拼接SQL语句
if (txtBookName.Text.Trim().Length > 0)
{
//sbSQL.Append(" BookName like @bkName");
wheres.Add(" BookName like @bkName");
listParameters.Add(new SqlParameter("@bkName", SqlDbType.NVarChar, 100) { Value = "%" + txtBookName.Text.Trim() + "%" }); }
if (txtAuthor.Text.Trim().Length > 0)
{
//sbSQL.Append(" Author like @author");
wheres.Add(" Author like @author ");
listParameters.Add(new SqlParameter("@author", SqlDbType.NVarChar, 100) { Value = "%" + txtAuthor.Text.Trim() + "%" });
}
if (txtPub.Text.Trim().Length > 0)
{
// sbSQL.Append(" Pub like @pub ");
wheres.Add(" Pub like @pub ");
listParameters.Add(new SqlParameter("@pub", SqlDbType.NVarChar, 100) { Value = "%" + txtPub.Text.Trim() + "%" });
}
//拼接SQL语句
//如果wheres集合当中的记录条数⼤于0,证明⽤户输⼊了条件
if (wheres.Count > 0)
{
sbSQL.Append(" where ");//只要有查询条件就拼接⼀个where
//然后把后⾯的查询条件拼接起来。
sbSQL.Append(string.Join(" and ", wheres));
}
SqlParameter[] pms = listParameters.ToArray();
MessageBox.Show(sbSQL.ToString());
//SqlHelper.ExecuteReader(sbSQL.ToString(),pms);
//SqlCommand cmd = new SqlCommand();
//cmd.Parameters.AddRange(
}
}
知识点:
1.sql拼接
2.参数化查询
3以下部分看起来简单,但却很难想到。
//在wheres集合中保存查询的sql条件
List<string> wheres = new List<string>();
//把参数也放到⼀个集合当中
List<SqlParameter> listParameters = new List<SqlParameter>(); if (wheres.Count > 0)
{
sbSQL.Append(" where ");//只要有查询条件就拼接⼀个where //然后把后⾯的查询条件拼接起来。
sbSQL.Append(string.Join(" and ", wheres));
}
SqlParameter[] pms = listParameters.ToArray();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论