WHERE子句中用于过滤的条件
本文关键字:条件 过滤 用于 子句 WHERE | 更新日期: 2023-09-27 17:54:58
基本上,我正试图根据3个条件从数据库中过滤不同的时间和温度。
-
(column) UnitNo = txtUnit。文本(用户在文本框中输入的内容)
-
(Start date) date>=ComboStart。文本(用户为第一个组合框选择的内容)
-
(结束日期)日期<=组合结束。文本(用户为第二个组合框选择的内容)
我知道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;
您必须使用像
这样的参数化查询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所建议的,请考虑参数化查询