Oledb和DATETIME的问题
本文关键字:问题 DATETIME Oledb | 更新日期: 2023-09-27 18:17:15
我需要一些帮助。这是我的代码:
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request " + "WHERE _Date >= " + "@Dt", con);
cmd.Parameters.Add("@Dt", OleDbType.Date);
cmd.Parameters["@Dt"].Value = DateTime.Now;
using (IDataReader reader = cmd.ExecuteReader())
{ }
但是它返回一个异常:
"查询表达式'_Date>= @Dt'语法错误。"OleDb异常
和以下代码:
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request " + "WHERE _Date > " + "'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") +"'", con);
using (IDataReader reader = cmd.ExecuteReader())
{ }
返回"查询表达式'_Date> '2014-08-08 10:55:04语法错误"。"
怎么了?
尽管有下划线,但名称Date是保留字,因此您可能应该将字段名称放在括号中:
WHERE [_Date] > @Dt
最好避免保留字,并对字段名使用更好的描述,如RequestDate。我还会避免以下划线开头的列名
试一下
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Request] WHERE [_Date] >= @Date", con);
cmd.Parameters.AddWithValue("@Date", DateTime.Now);
使用占位符作为参数,而不是通过将SQL连接在一起将SQL暴露给注入。
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Request WHERE _Date > ?", con);
cmd.Parameters.AddWithValue("@Date", DateTime.Now);