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有问题吗?