0

我刚刚花了最后几个小时尝试做一些我认为非常简单的事情。当我尝试在 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,各种格式的字符串等不起作用。

我发现这个页面表明它是一个已知的错误 - 但我也无法让页面上的任何变通方法起作用。我很困惑。

提前感谢您的帮助。

4

2 回答 2

0

所以我要说的是:

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

编辑

查看Gord Thompson的回答建议您应该尝试:

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();
于 2013-07-29T13:23:52.770 回答
0

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

DbParameter p = dataCommand.CreateParameter();
p.ParameterName = "@BackSearchDate";
p.Value = backSearchDate;
p.DbType = DbType.Date;
dataCommand.Parameters.Add(p);
于 2013-07-29T15:27:11.300 回答