码迷,mamicode.com
首页 > 数据库 > 详细

多条件搜索问题 -sql拼接与参数化查询

时间:2017-12-12 00:04:59      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:names   init   windows   搜索   ext   mes   sql拼接   ddr   一个   

来源:传智播客  免费开发视频。

 

问题:根据书名或出版社或作者查询书籍信息。

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();


多条件搜索问题 -sql拼接与参数化查询

标签:names   init   windows   搜索   ext   mes   sql拼接   ddr   一个   

原文地址:http://www.cnblogs.com/hao-1234-1234/p/8025421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!