代码如下:procedure TForm1.Button1Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.sql.Add('Insert Into TV(PID,IMAGE,TITLE) Values(PID,IMAGE,TITLE)');
  adoquery1.Parameters.ParamByName('PID').Value := 1;
  adoquery1.Parameters.ParamByName('IMAGE').Value := 2;
  adoquery1.Parameters.ParamByName('TITLE').Value := 'Hello';
  adoquery1.ExecSQL;
  adoquery1.Close;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select PID,IMAGE,TITLE from TV');
  adoquery1.Open;
  showmessage(inttostr(adoquery1.RecordCount));
  adoquery1.Close;
end;Button2Click可以运行,Button1Click的代码却报错"Parameter 'PID' not found".
请多多指教.

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.Add('Insert Into TV(PID,IMAGE,TITLE) Values(:PID,:IMAGE,:TITLE)');
      adoquery1.Parameters.ParamByName('PID').Value := 1;
      adoquery1.Parameters.ParamByName('IMAGE').Value := 2;
      adoquery1.Parameters.ParamByName('TITLE').Value := 'Hello';
      adoquery1.ExecSQL;
      adoquery1.Close;
    end;
      

  2.   

    adoquery1.sql.Add('Insert Into TV(PID,IMAGE,TITLE) Values(:PID,:IMAGE,:TITLE)');//参数前面加冒号“:”
      

  3.   

    加了冒号后,变成了"Insert into 语句的语法错误"
      

  4.   

    就是加冒号, "Insert into 语句的语法错误 肯定是其他原因,你在仔细看看。
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.Add('Insert Into TV(PID,IMAGE,TITLE) Values(:PID,:IMAGE,:TITLE)');
      adoquery1.Parameters.ParamByName(':PID').Value := 1;
      adoquery1.Parameters.ParamByName(':IMAGE').Value := 2;
      adoquery1.Parameters.ParamByName(':TITLE').Value := 'Hello';
      adoquery1.ExecSQL;
      adoquery1.Close;
    end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);begin
      inc(i);inc(j);
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.sql.Add('Insert Into TV (TITLE) Values (TITLE)');
      //adoquery1.Parameters.ParamByName('PID').Value := 1;
      //adoquery1.Parameters.ParamByName('IMAGE').Value := 2;
      adoquery1.Parameters.ParamByName('TITLE').Value := 'Hello';
      adoquery1.ExecSQL;
      adoquery1.Close;
    end;
    如果是这样的话,有没有冒号都一样行,但加上 PID 和 IMAGE就不行了,但数据库里确实有这2个字段.
      

  7.   

    楼主,SQL语句中的前面的PID,IMAGE,TITLE,是字段,后面的是参数,必须加上冒号。
      

  8.   

    按照啊九的方法,又变回了"Parameter ':PID' not found".
      

  9.   

    按照啊九的方法,又变回了"Parameter ':PID' not found".
      

  10.   

    >>>楼主,SQL语句中的前面的PID,IMAGE,TITLE,是字段,后面的是参数,必须加上冒号。
    没有冒号也行!我一直在试
    我的数据库有2个表,TV里有4个字段,ID 自动编号, PID,IMAGE:数字,TITLE:文本
    是ACCESS2000数据库.