WHERE子句中用于过滤的条件

本文关键字:条件 过滤 用于 子句 WHERE | 更新日期: 2023-09-27 17:54:58

基本上,我正试图根据3个条件从数据库中过滤不同的时间和温度。

  1. (column) UnitNo = txtUnit。文本(用户在文本框中输入的内容)

  2. (Start date) date>=ComboStart。文本(用户为第一个组合框选择的内容)

  3. (结束日期)日期<=组合结束。文本(用户为第二个组合框选择的内容)

我知道WHERE子句是错误的。有人能帮帮我吗?

Thanks in advance

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;  

WHERE子句中用于过滤的条件

您必须使用像

这样的参数化查询
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所建议的,请考虑参数化查询