gpt4 book ai didi

delphi - 如何使连接池在 DBX 中工作?

转载 作者:行者123 更新时间:2023-12-03 18:37:57 25 4
gpt4 key购买 nike

好吧,I managed get the delegate driver to set up properly,但是连接池仍然给我带来了很多麻烦。

从文档中给出的描述来看,连接池似乎应该像这样工作:

  • 在单个全局连接对象上设置 DBXpool 驱动程序委托(delegate)
  • 对数据库的所有调用都使用此 Connection 对象
  • 每个 DB 调用都将通过委托(delegate)驱动程序自动路由到其线程独有的连接,该连接由连接池拥有。

  • 在实践中,我发现一切似乎仍由全局 Connection 对象处理,当我尝试从多个并发线程运行数据库查询时,会导致各种奇怪的竞争条件和崩溃。

    如果它是相关的,我没有定义很多 DBX 特定的组件;我通常通过调用 Connection.Execute 来运行查询。方法。

    知道我做错了什么吗?我是否在某处遗漏了一步,或者我对 DBXPool 委托(delegate)驱动程序的工作原理有什么不好的理解?

    最佳答案

    Delphi 附带了一个示例项目 DelegatesSample。在我的机器上,它位于\Documents\RAD Studio\8.0\Samples\Delphi\Database\dbExpress\Delegates 下。

    池中的每个连接都有自己的 TDBXConnection 对象。在示例源代码中,每个连接都是通过调用 TDBXConnectionFactory.GetConnectionFactory.GetConnection() 创建的。 .

    你当然知道,线程中的每个查询都应该有它自己的连接对象。

    Felix Colibri 也很棒article关于 Delphi DBX4 编程。在那里,他还描述了使用池委托(delegate)驱动程序池数据库连接的其他主题。

    至少这些样本有助于我理解连接池的工作原理!

    关于delphi - 如何使连接池在 DBX 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11461492/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com