作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个 TCPip 服务器应用程序。该应用程序有一个全局 TADOConnection。此全局 ado 连接既可用于主线程查询,也可用于线程进程内。
这样可以吗? ADOConnection 是否具有同时处理多个查询的内置机制?
我的应用程序可以在测试环境(2-5 个连接)中找到。但在生产环境中部署时,当链接到 ADOConnection 的 TADOQuery 设置为打开时,我遇到了“无法解释的”访问冲突。
我应该使用 ADOConnection 还是所有查询都应该自行连接到数据库(这可能会消耗更多的资源)?
最佳答案
每个线程都需要有自己的连接对象。以下链接提供了更多信息:http://delphi.about.com/od/kbthread/a/query_threading.htm
文章中的一些要点:
1] 在使用任何 dbGo 对象之前,必须手动调用 CoInitialize 和 CoUninitialize。未能调用 CoInitialize 将导致“CoInitialize was not called”异常。 CoInitialize 方法在当前线程上初始化 COM 库。 ADO 是 COM。
2] 您不能从主线程(应用程序)使用 TADOConnection 对象。每个线程都需要创建自己的数据库连接。
关于delphi - 可以在线程中使用 TADOConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266532/
我是一名优秀的程序员,十分优秀!