Sql Adoquery1:CommandText不返回结果集

Sql Adoquery1:CommandText不返回结果集,sql,delphi,Sql,Delphi,我得到这个错误信息: Adoquery1:CommandText不返回结果集 为什么会出现此错误以及如何修复它?您只需删除对的调用即可 procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.close; ADOQuery1.SQL.text:='insert into veresiye (product,price,piece,total)

我得到这个错误信息:

Adoquery1:CommandText不返回结果集


为什么会出现此错误以及如何修复它?

您只需删除对的调用即可

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;
Open
用于打开查询返回的数据集。这也相当于设置
ADOQuery1.Active:=true
。在这种情况下,
INSERT
语句不会返回数据集,因此没有要打开的内容

ExecSQL
用于执行不返回结果数据集的语句,所以这里只需要使用这些语句

调用ExecSQL以执行当前分配给 SQL属性使用ExecSQL执行不返回 光标指向数据(如插入、更新、删除和创建表)。

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

资料来源:

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

ADOQuery1.Open;
要从表中获取值,请使用:

  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;

因为“ADOQuery1.Open”。请删除它。是的,您应该使用Open(您将能够获得数据集结果)或ExecSQL(无数据集结果)。感谢您的建议,我删除了ADOQuery1.Open,但db grid显示什么都没有发生。但我查看表格最后一次的变化,我在youtube视频中显示了这一点。如果您想在网格中显示数据,请使用
选择。。。来自veresiye
…'<代码>打开
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;