2012-04-18 7 views
7

Ich habe Delphi XE Professional. Es kommt mit einer Menge von DBX-Sachen, einschließlich der DBXPool Einheit, die die Verbindungspooling-Unterstützung enthält, aber es hat nicht die vollständige DBX-Unterstützung, die in XE Enterprise kommt. Insbesondere ist ein Großteil der Design-Time-Unterstützung nicht vorhanden.Wie richte ich das DBX-Verbindungspooling in Code ein?

Das stört mich nicht besonders. Ich war in der Lage, all das zu tun, was ich brauchte, ohne es zu brauchen, bis ich Verbindungspooling benötigte. Jetzt versuche ich, das zum Laufen zu bringen und ich kann nicht recht herausfinden, wie es funktioniert. Ich kann DBXPool zu meinem Programm hinzufügen und überprüfen, dass es initialisiert, aber wenn ich anfange, Datenbankanforderungen zu erstellen, wird TDBXPoolConnection.Create nie aufgerufen.

Hier ist mein Setup-Code für die Verbindung in der BeforeConnect Event-Handler. Wer weiß, was ich falsch mache und wie ich es richtig mache?

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; 

EDIT: Falls jemand über diese in der Zukunft kommt und hat das gleiche Problem, hier ist, wie ich es einrichten musste, um es richtig zu arbeiten. Anstelle der letzten zwei Zeilen oben,

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

Dank Sertac für mich auf den richtigen Kurs!

+0

Ist es möglich, dass, während das Gerät mit XE Pro ausgeliefert wird, es nicht funktioniert (weil die DBX-Bibliotheken/dlls diese Funktion in dieser SKU nicht aktivieren?) –

+0

Ich habe noch nie antying ähnliches getan, aber was ich 'v lies ich einen "DelegateConnection" -Parameter abrufen. [Hier] (http://docwiki.embarcadero.com/RADStudio/de/Connection_Pooling_%28Delegate_Drivers_tutorial%29) heißt es, dass es 'DBXPoolConnection' zugewiesen werden muss. –

+0

@Sertac: Aha! Das habe ich vermisst. Ich habe das gelesen, aber ich war mir nicht ganz sicher, welche Teile wo angewendet wurden. Ich habe es jetzt funktioniert. Vielen Dank! Wenn du das als Antwort postest, werde ich es akzeptieren. –

Antwort

4

Sie müssen DBXPoolConnection auf DelegateConnection Parameter einstellen.

Siehe: Connection Pooling.

Verwandte Themen