S
streamone
Unregistered / Unconfirmed
GUEST, unregistred user!
环境 delphi7 + SQL server 2000
表:CUNFEN
XM(varchar) JSF(bigint)
李连杰 5
李 -5
张 三 10
有如下语句:
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+:FZ AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=:XM');
Parameters.ParamByName('FZ').Value:=25;
Parameters.ParamByName('XM').Value:='李连杰';
open;
end;
返回结果:
XM JSF
李 20
如改写成
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+25 AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=:XM');
Parameters.ParamByName('XM').Value:='李连杰';
open;
end;
或
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+:FZ AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=''李连杰''');
Parameters.ParamByName('FZ').Value:=25;
open;
end;
则返回结果均为:
XM JSF
李连杰 30
用 SQL server 2000 的“事件探查器”跟踪发现第一种写法只传给 SQL server 2000
参数“XM”的第一个字,即“李连杰”的“李”字,所以结果出错。
可是为什么会这样呢?难道是Delphi7的BUG?可是我刚刚打了1.1的升级补丁啊。哪位高手知道原因和解决方法?
十万火急!!!!
表:CUNFEN
XM(varchar) JSF(bigint)
李连杰 5
李 -5
张 三 10
有如下语句:
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+:FZ AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=:XM');
Parameters.ParamByName('FZ').Value:=25;
Parameters.ParamByName('XM').Value:='李连杰';
open;
end;
返回结果:
XM JSF
李 20
如改写成
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+25 AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=:XM');
Parameters.ParamByName('XM').Value:='李连杰';
open;
end;
或
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT XM,JSF+:FZ AS JSF');
SQL.Add('FROM CUNFEN');
SQL.Add('WHERE XM=''李连杰''');
Parameters.ParamByName('FZ').Value:=25;
open;
end;
则返回结果均为:
XM JSF
李连杰 30
用 SQL server 2000 的“事件探查器”跟踪发现第一种写法只传给 SQL server 2000
参数“XM”的第一个字,即“李连杰”的“李”字,所以结果出错。
可是为什么会这样呢?难道是Delphi7的BUG?可是我刚刚打了1.1的升级补丁啊。哪位高手知道原因和解决方法?
十万火急!!!!