用ADOQuery添加记录,第一次成功,第二次就出错

tempsee 2006-10-21 11:06:24
以前用pb,初学Delphi。请教:

ADOConnection连接数据库,ADOQuery添加记录,第一次成功,只要再按一次,立即出现错误提示:

Access violation at adress xxxxxxxx in module '应用程序名称'.Read of adress 00000000


胡乱看书,记得Query执行什么不返回结果集,又有什么不能执行insert update delete命令,不知如何解决?

苦恼万分!请各位大力支持!

...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyhong 2006-11-08
  • 打赏
  • 举报
回复
Free和close有什么区别?
free把对象都释放了,下次在查询当然会报错了,CLOSE只是把数据集关闭而已
飞哥 2006-10-21
  • 打赏
  • 举报
回复
你两次插入的是相同的值?
~~~~~~~~~···

如果设置了主码
检查一下是否存在相同的

就是先select一下看有没
yukileo 2006-10-21
  • 打赏
  • 举报
回复
不知道你怎么写的sql
更不知道 “胡乱看书,记得Query执行什么不返回结果集,又有什么不能执行insert update delete命令,不知如何解决?”
这个你是从哪本书上看的

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into userlist (username,password) values("2","3")');
ADOQuery1.ExecSQL;
tempsee 2006-10-21
  • 打赏
  • 举报
回复
哈哈,解决了!! 天下一片宁静。
下一个问题我想请问:happyhong(虾皮红)兄,Free和close有什么区别?为什么我用Free会出现这个提示呢?
20分归您了。
谢谢大家!
tempsee 2006-10-21
  • 打赏
  • 举报
回复
等等。我试试happyhong(虾皮红) 兄台的ADOQuery1.CLOSE。
我的程序里用的是ADOQuery1.free,而不是ADOQuery1.CLOSE。
也许问题就出在这里!!

tempsee 2006-10-21
  • 打赏
  • 举报
回复
感谢各位!
但各位所作的设想我都已试过了。结果一如既往。

语句如下:
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('insert into book values(:account,:bookname)');
ADOQuery.Parameters.ParamByName('account').Value:=Edit_account.text;
ADOQuery.Parameters.ParamByName('bookname').Value:=Edit_bookname.Text ;
try
ADOQuery.ExecSQL;
MessageDlg('图书添加成功!!', mtInformation, [mbYes], 0);
except
MessageDlg('数据没有正常提交!!', mtInformation, [mbYes], 0);
end;
ADOQuery.Free;


执行,第一次完全正常,提示“图书添加成功!”,此时察看book表,确实也添加了记录。接着更改Edit_account和Edit_bookname的文本内容,再次执行,报错!!!

郁闷不已!!
happyhong 2006-10-21
  • 打赏
  • 举报
回复
ADOQuery1.CLOSE
comanche 2006-10-21
  • 打赏
  • 举报
回复
返回的是 Access violation, 是不是对像被释放了哈, PB 没有分配/释放说

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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