如何在代码中设置DBX连接池?

时间:2012-04-18 22:09:51

标签: delphi connection-pooling delphi-xe dbexpress

我有Delphi XE Professional。它附带了大量的DBX内容,包括包含连接池支持的DBXPool单元,但它没有XE Enterprise中提供的完整DBX支持。特别是,很多设计时支持都不存在。

我并不特别介意。我已经能够做到我需要的所有东西,没有它,直到我需要连接池。现在我正试图让它工作,我无法弄清楚如何使它工作。我可以将DBXPool添加到我的程序并验证它是否已初始化,但是当我开始发出数据库请求时,TDBXPoolConnection.Create永远不会被调用。

这是我在BeforeConnect事件处理程序中的连接设置代码。任何人都知道我做错了什么以及如何做对吗?

procedure TMyDataModule.connectionBeforeConnect(Sender: TObject);
begin
   connection.DriverName := 'Firebird';
   connection.Params.Values['User_Name'] := FUserName;
   connection.Params.Values['Password'] := FPassword;
   connection.Params.Values['Database'] := FDatabasePath;
   connection.Params.Values['ServerCharSet'] := 'UTF8';
   connection.Params.values['DelegateName'] := 'DBXPool';
   connection.Params.values['DelegateConnection.MaxConnections'] := '32';
end;

编辑:如果有人在将来遇到此问题并遇到同样的问题,我必须将其设置为使其正常工作。而不是上面的最后两行,

connection.Params.values['DelegateConnection'] := 'DBXPoolConnection';
connection.Params.values['DBXPoolConnection.DriverName'] := 'DBXPool';
connection.Params.values['DBXPoolConnection.MaxConnections'] := '32';

感谢Sertac让我选择了正确的课程!

1 个答案:

答案 0 :(得分:4)

您需要将DBXPoolConnection设置为DelegateConnection参数。

请参阅:Connection Pooling