帮我看下数据库代码哪出错了

lmjloavcj1 2008-02-04 11:06:33
procedure TForm1.Button1Click(Sender: TObject);

begin


ADOQuery1.Close;
ADOQuery1.SQL.Create;
ADOQuery1.SQL.Add('insert into error_table(id,error_id) values(:str,:str1)');
ADOQuery1.Parameters.ParamByName('str').value:=strtoint(edit1.Text);
ADOQuery1.Parameters.ParamByName('str1').value:=edit2.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Active:=false;
end;

上面的代码,执持一次可以,执行二次的时候就出现"不正常的定义参数对象。提供了不一致或不完整的信息"
...全文
80 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinmusam 2008-02-16
  • 打赏
  • 举报
回复
ADOQuery1.SQL.Create;
按钮事件中,第二句清空语句写错了.
应是ADOQuery1.SQL.Clear;
是清空,不是重新创建对象.
因为第二次运行时会重新创建SQL语句对象,
故会此报错误信息.
wxsan 2008-02-16
  • 打赏
  • 举报
回复
jf
alimyso 2008-02-15
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into error_table(id,error_id) values(:str,:str1)');
ADOQuery1.Parameters.ParamByName('str').value:=strtoint(edit1.Text);
ADOQuery1.Parameters.ParamByName('str1').value:=edit2.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
end;
woaiwd 2008-02-14
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;//Active:=False;
SQL.Clear;
SQL.Add('insert into error_table(id,error_id) values(:str,:str1)');
Parameters.ParamByName('str').value:=strtoint(edit1.Text);
Parameters.ParamByName('str1').value:=edit2.Text;
ExecSQL;
End;
end;

Close和Active:=False是一个意思
ADOQuery的一般用法是:

with ADOQuery1 do
begin
Close;
SQL.Clear;
...
Open;//ExecSQL;看SQL语句而定这里是Open还是ExecSQL
end;


点管理帖子加分就可以结贴了
lmjloavcj1 2008-02-04
  • 打赏
  • 举报
回复
OK。怎么结贴啊
lmjloavcj1 2008-02-04
  • 打赏
  • 举报
回复
谢谢 ,我试试
Ascn 2008-02-04
  • 打赏
  • 举报
回复
不要用:
ADOQuery1.SQL.Create;

用:
ADOQuery1.SQL.Clear;
Ascn 2008-02-04
  • 打赏
  • 举报
回复
procedure   TForm1.Button1Click(Sender:   TObject); 

begin

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into error_table(id,error_id) values(:str,:str1)');
ADOQuery1.Parameters.ParamByName('str').value:=strtoint(edit1.Text);
ADOQuery1.Parameters.ParamByName('str1').value:=edit2.Text;
ADOQuery1.ExecSQL;
ADOQuery1.Active:=false;
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧