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不返回结果集


为什么会出现此错误,我该如何解决?

最佳答案

调用ExecSQL执行当前分配给
SQL属性。使用ExecSQL执行不返回查询的查询
游标到数据(例如INSERT,UPDATE,DELETE和CREATE TABLE)。

ExecSQL返回反映行数的整数值
受执行的SQL语句影响。注意:对于SELECT语句,
调用Open而不是ExecSQL或将Active属性设置为true。至
为了提高性能,应用程序通常应准备查询
通过在调用ExecSQL之前将Prepared属性设置为true
第一次。


资料来源:http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ADODB_TADOQuery_ExecSQL.html

要在表中插入值,请使用:

  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;

关于sql - Adoquery1:CommandText不返回结果集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37460195/

10-10 16:56