• 多条件搜索问题 -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;
    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();


  • 相关阅读:
    Windows下对函数打桩,及Linux类似技术
    WIN10重启后,在任务栏下添加快捷工具栏消失问题修复
    VS2012下std::function的BUG解决办法
    【转载】inno setup 水波纹效果,检测安装vcredist_x86.exe等
    ArchLinux下XFCE的一个问题修复:thunar加载的环境变量不正确
    Daliy Algorithm (GPLT)-- day 94
    Daliy Algorithm (greedy , hash )-- day 93
    Daliy Algorithm (tarjan, greedy, bfs )-- day 92
    Daliy Algorithm (heap,greedy , IQ )-- day 91
    Daliy Algorithm (cf , GPLT )-- day 90
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/8025421.html
Copyright © 2020-2023  润新知