SOS!高手接分!(有关数据库连接的问题)

lunzi 2000-03-31 11:38:00
我在进行以下处理时,Delphi出错:
我的SQL Server数据库用一个Table控件与DBGrid相连,
以下是我的代码:
1. Table.disablecontrole;
2. table.close;
3. query1.add('delete from tablename');(删除大批量数据)
4. query1.execsql;
5. table.open;
6. table.enablecontrole;
7. if table.recordcount>0 then
...

当执行到第5句时,Delphi死机
若把第1、2、5、6去掉,当执行到第3句时,Delphi死机

另外,我想问什么情况下Delphi出错误提示:
' this connection is used by another statement '
请大虾救命!
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bpc 2000-03-31
  • 打赏
  • 举报
回复
刚才那是第二个问题。只有你用两个部件对同一个数据源
操作是才会有!
关于地一个问题。
应该写:
query1.close;
query1.sql.clear;
query1.sql.add('delete from tablename');
query1.open;

9Thoughts 2000-03-31
  • 打赏
  • 举报
回复
我对数据库比较熟悉,从数据库的角度说几句,
query1.add('delete from tablename');
query1.execsql;
这两条语句有可能把表锁住,而事务没有提交。
query1与table可能分属于不同事务,table.open发出For Update请求,一直在等待query1所在事务解锁,所以死掉了。

' this connection is used by another statement '
从字面上理解,你基于connection发出一条SQL语句,当该语句没有完成时又发出了另一条基于该connection的语句
bpc 2000-03-31
  • 打赏
  • 举报
回复
因为你的QUERY1部件没有关闭。


2,496

社区成员

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

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