用ADOQuery执行删除或更新或插入不成功的问题。我用的是ExecSQL(),总是提示ACCESS Violation.....错误

yangzhy 2005-05-14 04:49:55
如题,我先进行了如下查找工作:
String selectsql = “select ...from user ”;
ADOQuery->Active = false ;
ADOQuery->SQL->clear;
ADOQuery->sql->add(selectsql ) ;
ADOQuery->Active = true ;
查询成功后,紧接着对同一个表,就是上面的user表进行更新工作:
String updatesql = “update user set logtime = ...”;
ADOQuery->Active = false ;
ADOQuery->SQL->clear;
ADOQuery->sql->add(updatesql ) ;
ADOQuery->ExecSQL()
总是提示ACCESS Violation.....

用ADOQuery对表进行操作后需要释放吗?

谢谢!
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duchuan 2005-05-16
  • 打赏
  • 举报
回复
问题在第二部分
查询成功后,紧接着对同一个表,就是上面的user表进行更新工作:
String updatesql = “update user set logtime = ...”;
ADOQuery->Active = false ;
ADOQuery->SQL->clear;
ADOQuery->sql->add(updatesql ) ;
ADOQuery->ExecSQL()
总是提示ACCESS Violation.....
你必须在updatesql语句中指定要更新的纪录的唯一标识。
h98458 2005-05-16
  • 打赏
  • 举报
回复
没道理啊
yangzhy 2005-05-16
  • 打赏
  • 举报
回复
问题被我解决了,但是我还是知其然不知其所以然

我在每次查询之前都把它的CONNECTION关闭了就好了
ADOQuery2->Connection->Close() ;
ADOQuery2->Connection = ...
ADOQuery2->Close ();
ADOQuery2->SQL->clear;
ADOQuery2->sql->add(updatesql) ;
ADOQuery2->ExecSQL();

问题解决了,但是不知道为什么。
yangzhy 2005-05-16
  • 打赏
  • 举报
回复
TO楼上:
可是我关了再打开,同一语句,就能执行成功了。
scanmaymaymay 2005-05-15
  • 打赏
  • 举报
回复
你是有个感知控件的dataset=ADOQuery1吧,你用ADOQuery1->ExecSQL();之后,ADOQuery1没有返回数据集,
我猜是这样···
yangzhy 2005-05-15
  • 打赏
  • 举报
回复
我现在发现,如果我再增加一个控件ADOQuery2,然后
String updatesql = “update user set logtime = ...”;
ADOQuery2->Close ();
ADOQuery2->SQL->clear;
ADOQuery2->sql->add(updatesql) ;
ADOQuery2->ExecSQL();
没有任何问题,但是就是用刚刚查询过的ADOQuery报错。
是不是第一个ADOQuery查询后要释放什么东西?
scanmaymaymay 2005-05-14
  • 打赏
  • 举报
回复
String selectsql = “select ...from user ”;
ADOQuery->Close ();
ADOQuery->SQL->clear;
ADOQuery->sql->add(selectsql ) ;
ADOQuery->Open();
查询成功后,紧接着对同一个表,就是上面的user表进行更新工作:
String updatesql = “update user set logtime = ...”;
ADOQuery->Close ();
ADOQuery->SQL->clear;
ADOQuery->sql->add(updatesql) ;
ADOQuery->ExecSQL();
Javpp 2005-05-14
  • 打赏
  • 举报
回复
我都是这样做:

String selectsql = “...”;
ADOQuery->Close ();
ADOQuery->SQL->clear;
ADOQuery->SQL->Add (selectsql ) ;
ADOQuery->Open ();
h98458 2005-05-14
  • 打赏
  • 举报
回复
试试这样:
String selectsql = “select ...from user ”;
ADOQuery->SQL->clear;
ADOQuery->sql->add(selectsql ) ;
ADOQuery->Open();
查询成功后,紧接着对同一个表,就是上面的user表进行更新工作:
String updatesql = “update user set logtime = ...”;
ADOQuery->SQL->clear;
ADOQuery->sql->add(updatesql ) ;
ADOQuery->ExecSQL()

1,178

社区成员

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

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