先看一下示例的sql语句: select id from (select *,(select top 1 订购 日期 from 订单 where ...) as 最近订购 from 客户) where 最近订购 between @p1 and @p2 对应的添加 参数 的代码(使用enterprise library 3.1): db.addinparameter(cmd, p1, dbtyp
先看一下示例的sql语句:
select id from (select *,(select top 1 订购日期 from 订单 where ...) as 最近订购 from 客户) where 最近订购 between @p1 and @p2
对应的添加参数的代码(使用enterprise library 3.1):
db.addinparameter(cmd, p1, dbtype.datetime, dt1);
db.addinparameter(cmd, p2, dbtype.datetime, dt2);
为了便于阅读,我简化了语句的写法,各位请别管语法问题,我这儿要描述的问题是:使用这个sql命令来搜索记录,不会抛出异常,但搜索结果是不正确的!而如果把sql中的参数p1、p2直接改为#2009-2-12 12:00:00#这种形式,结果就正确了!
换句话说,使用参数方式添加参数值搜索结果不正确;直接把时期值写到sql语句中,就正确了。这是怎么回事呢?
补充说明:1、不使用子查询的话,参数化查询是正确的;2、将dbtype.datetime改为dbtype.date,或者将dt1改为dt1.tostring()同样不能解决。