const
SQLstr1 = 'select * from order where orderdate between :BeginDate and :EndDate';
SQLstr2 = 'select * from order where orderdate between ''%s'' and''%s''';
var
cmd;
begin
with ADODataSet1 do
begin
Close;
CommandText := SQLstr1;
Parameters.ParamValues['BeginDate']:=DateToStr(DataTimePicker1.Date);
Parameters.ParamValues['EndDate']:=DataToStr(DataTimePicker2.Date);
Prepared := True;
Open;
end;
with ADODataSet2 do
begin
Close;
CommandText := Format(SQLstr2,
[DateToStr(DataTimePicker1.Date), DataToStr(DataTimePicker2.Date)]);
Open;
end;
end;
数据库是SQL Server 2000。
我有两个问题:
1.上述两种方法孰优孰劣?
2.我在使用第一种方法的时候,如果不用DateToStr()函数,返回的记录集比用此函数要少,我在查询分析器上用相应的SQL语句得到的结果和用了DateToStr()函数后返回的是一样的。这是什么原因呢?
请高手不吝赐教!
SQLstr1 = 'select * from order where orderdate between :BeginDate and :EndDate';
SQLstr2 = 'select * from order where orderdate between ''%s'' and''%s''';
var
cmd;
begin
with ADODataSet1 do
begin
Close;
CommandText := SQLstr1;
Parameters.ParamValues['BeginDate']:=DateToStr(DataTimePicker1.Date);
Parameters.ParamValues['EndDate']:=DataToStr(DataTimePicker2.Date);
Prepared := True;
Open;
end;
with ADODataSet2 do
begin
Close;
CommandText := Format(SQLstr2,
[DateToStr(DataTimePicker1.Date), DataToStr(DataTimePicker2.Date)]);
Open;
end;
end;
数据库是SQL Server 2000。
我有两个问题:
1.上述两种方法孰优孰劣?
2.我在使用第一种方法的时候,如果不用DateToStr()函数,返回的记录集比用此函数要少,我在查询分析器上用相应的SQL语句得到的结果和用了DateToStr()函数后返回的是一样的。这是什么原因呢?
请高手不吝赐教!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货