Sql Adoquery1:CommandText不返回结果集
我得到这个错误信息: 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)
为什么会出现此错误以及如何修复它?您只需删除对的调用即可
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;