簡體   English   中英

WHERE子句中的3個條件用於過濾

[英]3 condition in WHERE clause for filtering

基本上,我試圖基於3個條件從數據庫中過濾出不同的時間和溫度。

  1. (列)UnitNo = txtUnit.Text(用戶在文本框中輸入的內容)

  2. (開始日期)日期> = ComboStart.Text(為第一個組合框選擇的用戶)

  3. (結束日期)日期<= 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM