[英]3 condition in WHERE clause for filtering
基本上,我試圖基於3個條件從數據庫中過濾出不同的時間和溫度。
(列)UnitNo = txtUnit.Text(用戶在文本框中輸入的內容)
(開始日期)日期> = ComboStart.Text(為第一個組合框選擇的用戶)
(結束日期)日期<= ComboEnd.Text(為第二個組合框選擇的用戶)
我知道WHERE子句是錯誤的..有人可以幫忙嗎?
提前致謝
string tableName = "Data3";
string query = "SELECT DISTINCT Time,Temperature FROM Data3 WHERE (UnitNo = txtUnit.Text) AND (Date >= ComboStart.Text) AND (Date<=ComboEnd.Text)";
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\acer\Documents\Database3.accdb");
OleDbDataAdapter ada = new OleDbDataAdapter(query, con);
DataSet set = new DataSet();
ada.Fill(set, tableName);
DataTable tab = new DataTable();
tab = set.Tables["Data3"];
dataGridViewDisplay.DataSource = tab;
您必須使用參數化查詢,例如
string query =
@"SELECT DISTINCT Time, Temperature
FROM Data3
WHERE (UnitNo = ?)
AND (Date >= ?)
AND (Date <= ?)";
然后添加如下參數:
ada.SelectCommand.Parameters.Add(new OleDbParameter("Unit", txtUnit.Text));
ada.SelectCommand.Parameters.Add(new OleDbParameter("DateFrom", ComboStart.Text));
ada.SelectCommand.Parameters.Add(new OleDbParameter("DateTo", ComboEnd.Text));
嘗試這個
string query = "SELECT DISTINCT " +
" Time," +
" Temperature " +
" FROM Data3 " +
" WHERE (UnitNo = " + txtUnit.Text + ")"+
" AND (Date >= '" + ComboStart.Text +"')" +
" AND (Date <= '" + ComboEnd.Text + "')";
您需要將控件中的值連接到該查詢中。 這樣可以解決您的錯誤,但是使用這種SQL並不是最佳實踐。 請考慮像Andy建議的參數化查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.