2012-04-18 17 views
7

Ho Delphi XE Professional. Viene fornito con una buona quantità di elementi DBX, inclusa l'unità DBXPool che contiene il supporto del pool di connessioni, ma non ha il supporto DBX completo fornito in XE Enterprise. In particolare, molti dei supporti per la progettazione non sono presenti.Come si configura il pool di connessioni DBX nel codice?

Non mi interessa particolarmente. Sono stato in grado di fare tutto ciò di cui avevo bisogno senza, fino a quando non avevo bisogno di un pool di connessioni. Ora sto cercando di farlo funzionare e non riesco a capire come farlo funzionare. Posso aggiungere DBXPool al mio programma e verificare che si inizializzi, ma poi quando inizio a fare richieste di database, TDBXPoolConnection.Create non viene mai chiamato.

Ecco il mio codice di installazione per la connessione, nel gestore eventi BeforeConnect. Qualcuno sa cosa sto sbagliando e come farlo nel modo giusto?

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: Nel caso qualcuno si imbatte in futuro e ha lo stesso problema, ecco come ho dovuto impostare fino a farlo funzionare bene. Invece delle ultime due righe sopra,

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

Grazie a Sertac per avermi messo sulla giusta rotta!

+0

E 'possibile che mentre l'unità viene fornita con XE pro, non è funzionale (perché le librerie/DLL DBX non abilitano questa funzione in questa SKU?) –

+0

Non ho mai fatto nulla simile ma da quello che ho 'v read Ricordo un parametro "DelegateConnection". [Qui] (http://docwiki.embarcadero.com/RADStudio/en/Connection_Pooling_%28Delegate_Drivers_tutorial%29) dice che deve essere assegnato 'DBXPoolConnection'. –

+0

@Sertac: Aha! Questo è quello che mi mancava. L'avevo letto, ma non ero abbastanza sicuro di quali parti si applicavano a dove. Ho funzionato ora. Grazie! Se lo pubblichi come risposta, lo accetterò. –

risposta

4

È necessario impostare il parametro DBXPoolConnection su DelegateConnection.

Vedere: Connection Pooling.

Problemi correlati