如何创建TParameters参数,然后 ADOQuery对象,使用自己创建的TParameters参数。
procedure TForm1.btn_3Click(Sender: TObject);
var
  ps:TParameters;
  p1,p2,p3:TParameter;
begin
  ps:=TParameters.Create(nil,TParameter);
  //p1:=ps.CreateParameter( 'f1',ftInteger,pdInput,4,1 );
  //p2:=ps.CreateParameter( 'f2',ftString,pdInput,10,'a');
  //p3:=ps.CreateParameter( 'f3',ftFloat,pdInput,8,1.3 ); //使用下面的Add也不行  p1:=ps.AddParameter;
  p1.Name:='f1';
  p1.DataType:=ftInteger;
  p1.Direction:=pdInput;
  p1.Value:=1;  p2:=ps.AddParameter;
  p2.Name:='f2';
  p2.DataType:=ftString;
  p2.Direction:=pdInput;
  p2.Value:='a';  p3:=ps.AddParameter;
  p3.Name:='f3';
  p3.DataType:=ftFloat;
  p3.Direction:=pdInput;
  p3.Value:=2.3;  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('insert t3(f1,f2,f3) values(:f1,:f2,:f3)');
   
  //在这里指定qry1中的参数值,为自己创建的参数,因为想把下面的赋值部分,
  //写个通用的方法,这里先做个测试用 
  qry1.Parameters.ParamByName('f1').Value:=ps[0].Value;
  qry1.Parameters.ParamByName('f2').Value:=ps[1].Value;
  qry1.Parameters.ParamByName('f3').Value:=ps[2].Value;
  qry1.ExecSQL;
end;

解决方案 »

  1.   

    insert into table1(id, name) values(:id, :value)qry1.ParamByName('id').ParamType := ptInput;
    qry1.ParamByName('id').DataType := ftInteger;
    qry1.ParamByName('id').AsInteger := 123;qry1.ParamByName('name').ParamType := ptInput;
    qry1.ParamByName('name').DataType := ftString;
    qry1.ParamByName('name').AsString := '123dd';
    上边这样满足要求吗
      

  2.   

    不满足呀
    我要自己创建参数,比如myParameters,然后给myParameters赋值
    然后qry1中的参数,依次用赋值过的myParameters 来给qry1中的参数赋值
      

  3.   


    你的sql语句写出来肯定知道参数情况
    先建立ps(TParameters), 然后赋给query即可
     qry1.Parameters := ps
      

  4.   

    我想把给qry1参数赋值部分 写个通用的方法
     preparePara(qry:TADOQuery;params:TParameters)
     var
       i:integer;
     begin
       for i:=0 to qry.Parameters.Count-1 do
       begin
         qry.Parameters[0].Value:=params[0].Value;
       end;
     end;类似如此的,所以需要创建params参数 然后传递给方法preparePara