把edit.text内容写入数据库,程序执行后提示:不能从单一执行程序返回多个数据集。怎么回事阿?程序如下:
procedure TForm3.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into 库存 values(:名称,:型号)');
adoquery1.Parameters.ParamByName('名称').Value:=trim(edit1.Text);
adoquery1.Parameters.ParamByName('型号').Value:=trim(edit2.Text);
adoquery1.ExecSQL;
adoquery1.Open;
end;
//-------------------------------------
换成adoquery1.sql.add('insert into 库存 (名称,型号)values('''+edit1.text+''','''+edit2.text''')');
也不行,还是同个buge 怎么回事啊?
procedure TForm3.Button1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into 库存 values(:名称,:型号)');
adoquery1.Parameters.ParamByName('名称').Value:=trim(edit1.Text);
adoquery1.Parameters.ParamByName('型号').Value:=trim(edit2.Text);
adoquery1.ExecSQL;
adoquery1.Open;
end;
//-------------------------------------
换成adoquery1.sql.add('insert into 库存 (名称,型号)values('''+edit1.text+''','''+edit2.text''')');
也不行,还是同个buge 怎么回事啊?
除了select语句用open,其他语句用ExecSQL
去掉去掉adoquery1.Open;就可以了
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into 库存 values(:名称,:型号)');
adoquery1.Parameters.ParamByName('名称').Value:=trim(edit1.Text);
adoquery1.Parameters.ParamByName('型号').Value:=trim(edit2.Text);
adoquery1.Open;
end;
你使用adocommand控件,并加一个连接
procedure TForm3.Button1Click(Sender: TObject);
beginadocommand.text:='insert inot 库存 values(名称,型号) values ('''+edit1.Text+''','''+edit2.Text+''');
adocommand.execute;
end;
---------------------------
谁说的... - -
关于Open和ExecSQL,准确来说,是返回数据集的用Open(包括执行有数据集返回的存储过程), 不返回数据集的用ExecSQL,楼上多位朋友已提到.