2012-04-18 37 views
7

我有Delphi XE Professional。它带有相当数量的DBX内容,包括包含连接池支持的DBXPool单元,但它没有XE Enterprise提供的完整DBX支持。特别是,许多设计时支持不在那里。如何在代码中设置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'; 

感谢塞尔特克把我放在正确的路线!

+0

有没有可能,虽然装置与XE专业版,它不是功能(因为DBX库/ dll不启用此功能在此SKU?) – 2012-04-18 22:41:49

+0

我从来没有做过类似反对,但从我什么'v读我记得一个“DelegateConnection”参数。 [这里](http://docwiki.embarcadero.com/RADStudio/en/Connection_Pooling_%28Delegate_Drivers_tutorial%29)它说它必须被分配'DBXPoolConnection'。 – 2012-04-18 22:51:26

+0

@Sertac:啊!这就是我所错过的。我读过,但我不确定哪些部件适用于哪里。我现在已经开始工作了。谢谢!如果您将其作为答案发布,我会接受它。 – 2012-04-18 23:13:45

回答

4

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

参见:Connection Pooling