來源:傳智播客 免費開發視頻。 問題:根據書名或出版社或作者查詢書籍信息。 知識點: 1.sql拼接 2.參數化查詢 3以下部分看起來簡單,但卻很難想到。 ...
來源:傳智播客 免費開發視頻。
問題:根據書名或出版社或作者查詢書籍信息。
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();