with AdoQuery1 do
begin
close;
sql.Clear;
Sql.Add('if (select Count(*) from ypsz where 编号=:编号)<0 ');
Sql.Add('insert ypsz (编号,名称,规格) Values (:编号1,:名称,:规格)');
Parameters[0].Value:=edit1.Text;
Parameters[1].Value:=edit1.Text;
Parameters[2].Value:=edit2.Text;
Parameters[3].Value:=edit3.Text;
Prepared;
ExecSQL;
close;
sql.Clear;
sql.Add('select * from ypsz where 编号=:编号');
parameters.ParamByName('编号').Value:=edit1.Text;
Prepared;
open;
end;//用profiler 跟踪如下:
sp_executesql N'if (select Count(*) from ypsz where 编号=@P1)<0
insert ypsz (编号,名称,规格) Values (@P2,@P3,@P4)
', N'@P1 varchar(3),@P2 varchar(3),@P3 varchar(5),@P4 varchar(5)', '大', '大', '嗒嗒', '撒旦'问题:1/数据库字段够大,但是保存到数据库不全,什么原因?
2/Sql.Add('insert ypsz (编号,名称,规格) Values (:编号1,:名称,:规格)');单独执行则可以
3/ Sql.Add('if (select Count(*) from ypsz where 编号='''+edit1.text+''')<0 ');
Sql.Add('insert ypsz (编号,名称,规格) Values ('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''')');这样也可以结论:ADO 的Parameters有问题吗?
begin
close;
sql.Clear;
Sql.Add('if (select Count(*) from ypsz where 编号=:编号)<0 ');
Sql.Add('insert ypsz (编号,名称,规格) Values (:编号1,:名称,:规格)');
Parameters[0].Value:=edit1.Text;
Parameters[1].Value:=edit1.Text;
Parameters[2].Value:=edit2.Text;
Parameters[3].Value:=edit3.Text;
Prepared;
ExecSQL;
close;
sql.Clear;
sql.Add('select * from ypsz where 编号=:编号');
parameters.ParamByName('编号').Value:=edit1.Text;
Prepared;
open;
end;//用profiler 跟踪如下:
sp_executesql N'if (select Count(*) from ypsz where 编号=@P1)<0
insert ypsz (编号,名称,规格) Values (@P2,@P3,@P4)
', N'@P1 varchar(3),@P2 varchar(3),@P3 varchar(5),@P4 varchar(5)', '大', '大', '嗒嗒', '撒旦'问题:1/数据库字段够大,但是保存到数据库不全,什么原因?
2/Sql.Add('insert ypsz (编号,名称,规格) Values (:编号1,:名称,:规格)');单独执行则可以
3/ Sql.Add('if (select Count(*) from ypsz where 编号='''+edit1.text+''')<0 ');
Sql.Add('insert ypsz (编号,名称,规格) Values ('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''')');这样也可以结论:ADO 的Parameters有问题吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货