多条件搜索问题 -sql拼接与参数化查询
2018-06-17 22:29:39来源:未知 阅读 ()
来源:传智播客 免费开发视频。
问题:根据书名或出版社或作者查询书籍信息。
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; 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();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:如何使用 Q#
- Linux简介及最常用命令(简单易学能解决95%以上的问题) 2019-10-08
- 这有一份 Git 日常使用清单,你需要吗? 2019-09-23
- 提问频率较高的php面试题 2019-09-23
- PHP 实例 - AJAX 实时搜索 2019-09-17
- 项目上线后,谈一下感触比较深的一点:查询优化 2019-09-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash