procedure TForm1.Button1Click(Sender: TObject);
var
  id,name,did:string;
begin
  id := trim(edit1.Text);
  name := trim(edit2.Text);
  did := trim(edit3.Text);
  with ADOQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('insert into employee values(:id,:name,:did)');
    ExecSQL;
  end
end;3个edit都有值,但为什么报错说插入NULL值(:id 为主键)?初次求解!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      id,name,did:string;
    begin
      with ADOQuery1 do
      begin
        close;
        SQL.Clear;
        SQL.Add('insert into employee values(:id,'':name'',:did)');
        Parameters[0].Value=trim(edit1.Text);
        Parameters[1].Value=trim(edit2.Text);
        Parameters[2].Value=trim(edit3.Text);
        ExecSQL;
      end
    end;或者直接用SQL写吧,不设参数
      

  2.   

    楼上正解也可以使用类似 Parameters.by参数名['id'].value  来赋值其间加上异常判断  或者判断返回值  以确定插入成功
      

  3.   

    SQL.Add('insert into employee values('+trim(edit1.Text)+','+trim(edit1.Text)+','+trim(edit1.Text));