procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
ADOQuery1.Open;
ADOQuery1.ExecSQL;
end;
我收到此错误消息:
Adoquery1:CommandText不返回结果集
为什么我会收到此错误以及如何解决?
答案 0 :(得分:7)
调用ExecSQL来执行当前分配给的SQL语句 SQL属性。 使用ExecSQL执行不返回的查询 游标到数据(例如INSERT,UPDATE,DELETE和CREATE TABLE)。
ExecSQL返回一个反映行数的整数值 受执行的SQL语句影响。注意:对于SELECT语句, 调用Open而不是ExecSQL或将Active属性设置为true 。至 速度性能,应用程序通常应该准备查询 通过在调用ExecSQL之前将Prepared属性设置为true 第一次。
要在表使用中插入值:
ADOQuery1.close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
ADOQuery1.ExecSQL;
从表使用中获取值:
ADOQuery1.close;
ADOQuery1.SQL.text:='select * from veresiye';
ADOQuery1.Open;
答案 1 :(得分:4)
您只需删除对
的调用即可ADOQuery1.Open;
Open
用于打开查询返回的数据集。这也相当于设置ADOQuery1.Active := true
。在这种情况下,INSERT
语句不会返回数据集,因此无需打开任何内容。
ExecSQL
用于执行不返回结果数据集的语句,因此您只需要在此处使用。
答案 2 :(得分:1)
在表格中插入值:
ADOQuery1.Close;
ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)
VALUES (:par0,:par1,:par2,:par3)';
ADOQuery1.Parameters.ParamByName('par0').Value:=Edit1.Text;
ADOQuery1.Parameters.ParamByName('par1').Value:=Edit2.Text;
ADOQuery1.Parameters.ParamByName('par2').Value:=Edit3.Text;
ADOQuery1.Parameters.ParamByName('par3').Value:=Edit4.Text;
Try
ADOQuery1.ExecSQL;
except on E: Exception do
MessageDlg(E.Message,mtError,[mbOK],0);
End;