我只用DbExpress组件在Delphi语言中做过“图形用户界面”的数据库访问,但现在我想在后台执行一个查询。我读到了一些TSQLConnection不安全线程情况,我必须为每个线程创建新的连接。我看到TSQLConnection中有CloneConnection,但help声称新连接归原始连接所有。
所以,
1)执行位于数据模块线程化上的TSQLQuery的正确方式是什么?
2)可以使用TSQLConnection.CloneConnection吗?我应该释放克隆的连接,还是在线程结束时让它们保持不变?
简单的示例代码(或URL)将非常有用。
发布于 2009-02-03 12:00:32
这并不是特定于DbExpress的(我对它没有经验),但是将一些功能转移到后台线程中的最好的想法是首先在主线程中开发它,调试它,一旦你确定它执行得很好,然后移动它。
你能做的就是把所有东西都放到TDataModule上。如果数据模块能够独立工作,不需要其他表单或数据模块上的其他组件,并且您在后台线程中创建它,那么您可以相当确定地确定事情将会正常工作。您不需要克隆连接,因为它将在执行对数据库的所有访问的同一线程中创建和销毁。
数据库使用后台线程的一些重要提示:
如果你想让你的生活更轻松,可以考虑使用OmniThreadLibrary或AsyncCalls。哪一个取决于您的后台数据库连接将存在多长时间,以及您是否希望重用它们。
https://stackoverflow.com/questions/506762
复制相似问题