2012-04-18 21 views
7

मुझे डेल्फी एक्सई प्रोफेशनल मिला है। यह डीबीएक्स सामान की उचित मात्रा के साथ आता है, जिसमें DBXPool इकाई शामिल है जिसमें कनेक्शन पूलिंग समर्थन है, लेकिन इसमें पूर्ण डीबीएक्स समर्थन नहीं है जो एक्सई एंटरप्राइज़ में आता है। विशेष रूप से, डिजाइन-समय का समर्थन बहुत सारे नहीं है।मैं कोड में डीबीएक्स कनेक्शन पूलिंग कैसे स्थापित करूं?

मुझे विशेष रूप से यह बुरा नहीं लगता है। जब तक मुझे कनेक्शन पूलिंग की आवश्यकता न हो, तब तक मैं उन सभी चीजों को करने में सक्षम हूं, जिनके लिए मुझे इसकी आवश्यकता है। अब मैं इसे काम करने की कोशिश कर रहा हूं और मैं यह समझ नहीं सकता कि इसे कैसे काम करना है। मैं अपने प्रोग्राम में DBXPool जोड़ सकता हूं और सत्यापित कर सकता हूं कि यह प्रारंभ होता है, लेकिन फिर जब मैं डेटाबेस अनुरोध करना शुरू करता हूं, TDBXPoolConnection.Create कभी नहीं कहा जाता है।

पहले कनेक्शन कनेक्ट हैंडलर में, कनेक्शन के लिए मेरा सेटअप कोड यहां दिया गया है। किसी को पता है कि मैं क्या गलत कर रहा हूं और इसे कैसे प्राप्त किया जाए?

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 के लिए धन्यवाद!

+0

क्या यह संभव है कि यूनिट जहाजों के साथ एक्सई प्रो के साथ जहाज, यह कार्यात्मक नहीं है (क्योंकि डीबीएक्स पुस्तकालय/डीएलएस इस एसकेयू में इस सुविधा को सक्षम नहीं करते हैं?) –

+0

मैंने कभी भी समानता नहीं की है, लेकिन मैं 'v पढ़ा मुझे एक "DelegateConnection" पैरामीटर याद है। [यहां] (http://docwiki.embarcadero.com/RADStudio/en/Connection_Pooling_%28Delegate_Drivers_tutorial%29) यह कहता है कि इसे 'डीबीएक्सपूलकनेक्शन' असाइन किया जाना चाहिए। –

+0

@Sertac: आह! यही वह था जो मैं याद कर रहा था। मैं इसे पढ़ूंगा, लेकिन मुझे पूरा यकीन नहीं था कि किन भागों पर लागू किया गया था। मुझे अब यह काम मिल गया है। धन्यवाद! यदि आप इसे उत्तर के रूप में पोस्ट करते हैं, तो मैं इसे स्वीकार करूंगा। –

उत्तर

4

आपको DBXPoolConnection से DelegateConnection पैरामीटर सेट करने की आवश्यकता है।

देखें: Connection Pooling