2010-02-18 10 views
6

संक्षिप्त प्रश्न: मुझे लगता है कि मुझे ओडीबीसी पर मार्स का उपयोग करने की आवश्यकता है लेकिन एडीओ/ओएलडीडीबी पर नहीं, क्या यह सही है?एमएआरएस से ओडीबीसी है लेकिन वेनस से एडीओ/ओएलडीडीबी है?

लंबे समय तक स्पष्टीकरण:

मैं बस अपना ODBC कोड का पता चला (का उपयोग करते हुए "ड्राइवर = {एसक्यूएल मूल क्लाइंट}", MFC CDatabase कोड) मार्स की जरूरत है ("MARS_Connection = हाँ,"), क्योंकि, हालांकि मुझे करना रिकॉर्डसेट खोलते समय एकाधिक चयन जारी नहीं करते हैं, मैं पंक्तियों का एक बैच लाता हूं, फिर एक नया चयन जारी करने के लिए एक और रिकॉर्डसेट खोलने की आवश्यकता होती है, और उसके बाद अगले बैच के लिए पहले रिकॉर्डसेट पर वापस आती है। मार्स के बिना मुझे ओडीबीसी त्रुटि मिलती है "कनेक्शन किसी अन्य कमांड के परिणामों के साथ व्यस्त है"। सब ठीक है।

हालांकि, मेरा कोड ओडीबीसी के बजाय एडीओ/ओएलडीडीबी ("प्रदाता = एसक्यूएलएनसीएलआई, #import msado15.dll) के साथ समान रूप से काम करता है। उसी स्थिति में, मेरे पास को "MarsConn = yes" निर्दिष्ट करना था।

मैं उलझन में हूं/हैरान हूं। क्या यह सही/अपेक्षित है, या क्या मुझे कुछ याद आ रहा है?

उत्तर

5

यदि कोई दिलचस्पी है, तो मुझे पता चला कि समस्या/अंतर क्या है। मुझे एडीओ मामले में सूक्ष्म समस्या के कारण कोड पर फिर से जाना पड़ा, जो संबंधित हो गया।

आप एक से अधिक समवर्ती recordsets जरूरत है, यह, ODBC के साथ आसान है क्योंकि अगर आप के रूप में ऊपर, मंगल यह सिर्फ त्रुटियों का उपयोग नहीं करते।

ADO/OLEDB के साथ, तथापि, यह और अधिक सूक्ष्म है। जब मैं मार्स का उपयोग नहीं करता, तो एकाधिक रिकॉर्डसेट बस ठीक काम करते हैं। लेकिन, कवर के तहत, क्या होता है कि एडीओ प्रत्येक के लिए एक और नया सत्र खोलता है, लेकिन आप इसके बारे में नहीं जानते और बता नहीं सकते। और यह वास्तविक धीमा हो जाता है, क्योंकि प्रत्येक सत्र में एक पूर्ण ऑडिट लॉगऑन & बंद होता है, और मैं हर समय बना रहा हूं, बंद कर रहा हूं और फिर से बना रहा हूं।

इसलिए मैंने एडीओ के लिए "मार्स कनेक्शन = ट्रू" डाला और लो & देखें, अब यह ओडीबीसी की तरह व्यवहार करता है, नए बनाने के बजाय मौजूदा कनेक्शन का पुनः उपयोग कर रहा है।

तो नैतिक है: आप ODBC के लिए मार्स है करने के लिए है , जबकि ADO/OLEDB अपने स्वयं के कर्म कर मार्स बिना एकाधिक समवर्ती recordsets की अनुमति देगा, लेकिन यह (ठीक) नहीं हो सकता है कि आप क्या चाहते/सबसे अच्छा है ।

संबंधित मुद्दे