2009-04-27 15 views
8

का उपयोग कर एसक्यूएल सीई डीबी से कनेक्ट करना बहुत सरल सवाल है। मैं एक ऐप बना रहा हूं जो SQL सर्वर 2005 इंस्टेंस से डेटा पढ़ता है। मैं अपने लैपटॉप पर कुछ परीक्षण चलाने के लिए चाहता था (जिसमें SQL 2005 नहीं है) इसलिए मैं परीक्षण के उद्देश्य के लिए स्थानीय डेटाबेस में स्वैपिंग देख रहा था।SQLConnection

मैं वीएस 2008 का उपयोग कर रहा हूं इसलिए कॉम्पैक्ट संस्करण डीबी एक प्राकृतिक पसंद प्रतीत होता है। मैंने बस अपनी कनेक्शन स्ट्रिंग को स्वैप करने की उम्मीद की थी, लेकिन ऐसा लगता है कि यह केवल मुझे सीक डेटाबेस से एसक्यूएलसीनेक्शन का उपयोग करके कनेक्ट करेगा, न कि एसक्यूएलकनेक्शन। इस के आसपास किसी भी तरह, modifiers मैं कनेक्शन स्ट्रिंग में शायद उपयोग कर सकते हैं?

उत्तर

7

यह वास्तव में केवल संशोधित कॉन्फ़िगरेशन पैरामीटर द्वारा उपयोगकर्ता एसक्यूएल सीई के बजाय पूर्ण विकसित एसक्यूएल सर्वर के लिए बहुत संभव है: परिवर्तन कनेक्शन स्ट्रिंग और IDbXXX परिवार इंटरफेस जहां भी संभव हो प्लेटफ़ॉर्म-विशिष्ट SqlXXX और SqlCeXXX लोगों के बजाय का उपयोग करें। DbProviderFactories देखें।

हालांकि, इन दो प्लेटफार्मों की एसक्यूएल बोलियों में मतभेदों की सलाह दी जानी चाहिए।

+0

बिल्कुल वही जो मैं धन्यवाद के लिए देख रहा था। एक इलाज करता है। – TygerKrash

+1

क्या आप एक अच्छा लिंक जानते हैं जो "बोलियों में मतभेद" को हाइलाइट करता है? यह वास्तव में उपयोगी होगा यदि कोई पृष्ठ प्रमुख चीजों को सूचीबद्ध करता है जो SQL सर्वर में मौजूद समर्थन का समर्थन नहीं करता है। – noelicus

1

डीबी के लिए आपको आवश्यक सभी एसक्यूएल संबंधित ऑब्जेक्ट्स मूल सार डीबी से प्राप्त होते हैं ... (यानी डीबीकनेक्शन, डीबीडेटा एडाप्टर इत्यादि ...)। इसलिए आप किसी प्रकार का डेटाबेस प्रबंधक वर्ग लिख सकते हैं कि तत्काल आवश्यकता होने पर आपको एसक्यूएल या एसक्यूएल सी से निपटने की ज़रूरत है। फिर, उस बिंदु से आगे आप बेस क्लास ऑब्जेक्ट्स (डीबीकनेक्शन आदि ..) के साथ सौदा करते हैं। इस तरह, आपको हर बार बदलने की ज़रूरत है, क्या यह आपके प्रबंधक वर्ग का तत्काल है।

इस तरह से ऐसा करने के लिए एक और प्लस, अगर आप बाद में किसी अन्य प्रदाता को स्विच करने का निर्णय लेते हैं, तो अधिक कोड बदलने की आवश्यकता नहीं है।

4

हाँ आप इसके बजाय बेस क्लास का संदर्भ देकर SQL कॉम्पैक्ट और/या SQL सर्वर का उपयोग कर सकते हैं। उदाहरण के लिए: "Data Source=urData.sdf;Persist Security Info=False;":

IDbConnection Connection; 

if (Compact) 
    Connection = new SqlCeConnection(); 
else 
    Connection = new SqlConnection(); 

कनेक्शन स्ट्रिंग उदाहरण के लिए, एसक्यूएल कॉम्पैक्ट के लिए अपनी डेटा फ़ाइल में बात करने के लिए की जरूरत है। अधिक examples here

यह लिंक समझाएगा कि differences there are between SQL Server and SQL Compact, जैसा कि यह समान नहीं है।

+0

बोली अंतरों पर अतिरिक्त जानकारी के लिए धन्यवाद, यह उपयोगी है। मुझे लगता है कि उदाहरण कोड भी काम करेगा, लेकिन स्पष्ट वर्ग संदर्भों से बचने और डीबीप्रोवाइडर कारखानों का उपयोग करने और इसके बजाय कनेक्शन प्रकार को प्रबंधित करने के लिए कॉन्फ़िगरेशन का उपयोग करने के रूप में स्पष्ट रूप से साफ नहीं है (स्पष्टीकरण संदर्भ सीई कनेक्शन प्रकारों के साथ) (चयनित उत्तर के अनुसार)। – TygerKrash

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