高手进来!interbase的怪问题!!!!!!!!!!!!!! 200分! (200分)

  • 主题发起人 主题发起人 iwalk
  • 开始时间 开始时间
I

iwalk

Unregistered / Unconfirmed
GUEST, unregistred user!
难以置信!TNND! interbase!!!
怪问题俩!
1、ibquery连接,修改完后commit,ibquery自动变成关闭。
而我有个dbgrid连在ibquery上,只好将ibquery重新打开一遍。
2、这个问题其实是第一个问题的延续,既然ibquery重新打开就要重新定位记录,
在COMMIT前先GETbookmark, OPEN后GOTOBOOKMARK, 结果找不到那条记录!
我在DBGRID里面看确实没有,再执行CLOSE,OPEN后又有了.
而且如果第一遍重打开时没GOTOBOOKMARK,也能在DBGRID里面找到.




 
提交事务后ibquery关闭是正常的.再打开就行了.
 
To hbezwwl:提交事务后ibquery关闭是正常的.再打开就行了.
————我用过其他数据库,都没有这个问题。
BTW:请高手谈谈interbase的事务处理,最好举个例子,我总觉得interbase的事务处理唧唧歪歪的。
用的不爽。

 
使用 CommitRetaining 代替 Commit (似乎只有Interbase6.0及以上版本支持)
这样可以让事务保持打开状态,你的ibQuery也就不会自动关闭了。
 
lighttop说得对,使用commitretaining代替commit就行了.
以前用的有的忘了,他一说就想起来了.
但是使用commit ibquery关闭是正常的.
 
To hbezwwl:
我用过其他数据库,commit后没有关闭query啊,能否详述为何?
 
IB和sql server在SQL语言中的commit功能是一样的。
只不过使用ibexpress连接interbase时,是用的
IBTransaction.Commit关闭数据据,但是与interbase
的sql语句是没有关系的。
这是因为用的是ibexpress,在bde中连接interbase,
提交事务,不会关闭数据集。
关于IBTranscation.Commit;IBTranscation.CommitRetaining
的区别,可以参考IBDatabase.pas文件。
 
后退
顶部