insert 失败,该怎么处理

insert 失败
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   为主键)?初次求解!

------解决方案--------------------
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写吧,不设参数
------解决方案--------------------
楼上正解

也可以使用类似 Parameters.by参数名[ 'id '].value 来赋值

其间加上异常判断 或者判断返回值 以确定插入成功
------解决方案--------------------
SQL.Add( 'insert into employee values( '+trim(edit1.Text)+ ', '+trim(edit1.Text)+ ', '+trim(edit1.Text));