多條件查詢,使用StringBuilder拼接SQL語句,效果如下: 當點擊按鈕時代碼如下: private void button1_Click(object sender, EventArgs e) { //假設表名:Books //列名:BooksName(圖書名稱) Author(作者) P ...
多條件查詢,使用StringBuilder拼接SQL語句,效果如下:
當點擊按鈕時代碼如下:
private void button1_Click(object sender, EventArgs e)
{
//假設表名:Books
//列名:BooksName(圖書名稱) Author(作者) Press(出版社)
//多條件查詢,要根據用戶輸入的內容來動態拼接SQL語句
//1.假設如果用戶沒有輸入就查詢所有信息
StringBuilder builder = new StringBuilder("select * from Books ");
//在wheres集合中保存所有查詢的SQL語句
List<string> wheres = new List<string>();
//把參數也放到集合中
List<SqlParameter> sqlParameters = new List<SqlParameter>();
//2.如果用戶輸入了條件,則根據用戶輸入的條件動態拼接SQL語句
if (txtBookName.Text.Trim().Length>0)
{
//builder.Append(" BooksName like @btName");
wheres.Add(" BooksName like @btName");
sqlParameters.Add(new SqlParameter("@btName", SqlDbType.NVarChar, 100){ Value="%"+ txtBookName.Text.Trim()+"%" });
}
if (txtAuthor.Text.Trim().Length>0)
{
//builder.Append(" Author like @Author");
wheres.Add(" Author like @Author");
sqlParameters.Add(new SqlParameter("@Author", SqlDbType.NVarChar, 100) { Value = "%" + txtAuthor.Text.Trim() + "%" });
}
if (txtPress.Text.Trim().Length>0)
{
//builder.Append(" Press like @Press");
wheres.Add(" Press like @Press");
sqlParameters.Add(new SqlParameter("@Press", SqlDbType.NVarChar, 100) { Value = "%" + txtPress.Text.Trim() + "%" });
}
//拼接SQL語句
//如果wheres中的集合當中的數據大於0,證明用戶輸入了條件
if (wheres.Count>0)
{
builder.Append(" where ");//只要有查詢條件就拼接一個where條件
builder.Append(string.Join(" and ", wheres));//然後把後面的條件拼接起來
}
SqlParameter[] parameters = sqlParameters.ToArray();
MessageBox.Show(builder.ToString());
//SqlHelper.ExecuteReader(builder.ToString(),parameters);
}