Querying Access 2007 DateTime with C#

本文关键字:with DateTime 2007 Access Querying | 更新日期: 2023-09-27 18:25:16

我刚刚花了几个小时尝试做一些我认为非常简单的事情。当我尝试在Access 2007数据库上运行带日期的参数化查询时,遇到"条件表达式中的数据类型不匹配"错误。数据库中的问题列属于"日期/时间"数据类型。

在一个简化的例子中-

dataCommand.CommandText "SELECT * FROM tblData WHERE IDate > #24/07/2013 16:54:51#"

这是有效的。但当我试图参数化日期时,我就遇到了错误。所以…

dataCommand.CommandText = "SELECT * FROM tblData WHERE IDate > @BackSearchDate"
....
dataCommand.Parameters.Add(new OleDbParameter("@BackSearchDate", backSearchDate))

将遇到错误。我尝试过以多种方式提供backSearchDate变量。DateTime、各种格式的字符串等都不起作用。

我发现了这个页面,这表明它是一个已知的错误,但我也无法在页面上找到任何解决方案。我被难住了。

提前感谢您的帮助。

Querying Access 2007 DateTime with C#

对于将来遇到这个问题的任何人-如果您以以下方式添加参数,它似乎可以工作:

DbParameter p = dataCommand.CreateParameter();
p.ParameterName = "@BackSearchDate";
p.Value = backSearchDate;
p.DbType = DbType.Date;
dataCommand.Parameters.Add(p);

所以我要说的是:

dataCommand.CommandText = "SELECT * FROM tblData WHERE IDate > @BackSearchDate"

编辑

看看戈尔德·汤普森的答案,你应该试试:

var conn = new OleDbConnection(@"ConnString");
conn.Open();
var cmd = new OleDbCommand(
                "SELECT * FROM tblData WHERE IDate > @BackSearchDate", 
                conn);
cmd.Parameters.AddWithValue("@BackSearchDate", new DateTime(backSearchDate));
OleDbDataReader rdr = cmd.ExecuteReader();