ado.net - ASP.NET: How to create a connection from a web.config ConnectionString? -


आप प्रदाता नाम पर आधारित एक DbConnection का निर्माण कैसे करते हैं?

नमूना प्रदाता नाम s

  • System.Data.SqlClient
  • System.Data.OleDb
  • System.Data.Odbc
  • FirebirdSql.Data.FirebirdClient

मेरे पास आईआईएस सर्वर की वेब। कॉन्फ़िग फ़ाइल में कनेक्शन स्ट्रिंग्स संग्रहीत हैं:

  & lt; connectionStrings & gt ; & Lt; नाम जोड़ें = "विकास" कनेक्शन स्ट्रिंग = "प्रदाता = आईबीडीए 4 400; डेटा स्रोत = माइस्काइस्टामेन; यूजर आईडी = यूजर यूजर; पासवर्ड = माइ पावर्ड;" प्रदातानाम = "System.Data.OleDb" / & gt; & Lt; नाम जोड़ें = "लाइव" कनेक्शन String = "usd = sa; pwd = password; server = deathstar;" प्रदाता नाम = "System.Data.Odbc" / & gt; & Lt; नाम जोड़ें = "परीक्षण" connectionString = "usd = sa; pwd = पासवर्ड; सर्वर = डेस्टास्टार;" प्रदाता नाम = "System.Data.SqlClient" / & gt; & Lt; नाम जोड़ें = "ऑफ़लाइन" कनेक्शन स्ट्रिंग = "सर्वर = लोकलहोस्ट; उपयोगकर्ता = SYSDBA; पासवर्ड = मास्टरकी; वर्णक = कोई नहीं; डेटाबेस = सी: \ डेटा \ mydb.fdb" providerName = "FirebirdSql.Data.FirebirdClient" / & gt;  

आप देख सकते हैं कि वे सभी अलग प्रदाताओं का उपयोग करते हैं। जब यह मेरे लिए एक कनेक्शन बनाने का समय आता है, तो मुझे यह जानना होगा कि किस तरह का डीबीसीएनेक्शन बनाने के लिए, जैसे:

  • एसक्यूएल कनेक्शन [/ li]
  • OleDbConnection
  • कनेक्शन स्रोत प्रविष्टियों में एक प्रदाता नाम होता है, लेकिन ये DbConnection वंश वर्गों के नाम नहीं हैं, लेकिन ऐसा प्रतीत होता है कि एक नामस्थान

    मैं एक स्ट्रिंग providerName के आधार पर एक DbConnection का निर्माण कैसे करूँ?


      सार्वजनिक DbConnection GetConnection (स्ट्रिंग कनेक्शननाम) {// कनेक्शन प्राप्त करें String Infomation ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings [connectionName]; यदि (सीएस == रिक्त) नया कॉन्फ़िगरेशन अपवाद फेंक ("अमान्य कनेक्शन नाम \" "+ connectionName +" \ "); // प्रदाता DbConnection conn = new DbConnection () के आधार पर एक कनेक्शन बनाएँ;}  

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

  सार्वजनिक DbConnection GetConnection (स्ट्रिंग connectionName) {// वेब। कॉन्फ़िग से कनेक्शन स्ट्रिंग जानकारी प्राप्त करें ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings [connectionName]; // यदि रिक्त नहीं लौटाया जाता है, तो उसे नहीं मिला (सीएस == रिक्त) नए कॉन्फ़िगरेशनएअरर्स अपवाद फेंक ("अवैध कॉन निषेध नाम \ "" + connectionName + "\" "); // दी प्रदाता के लिए कारखाना प्राप्त करें (उदा। "System.Data.SqlClient") DbProviderFactory फ़ैक्टरी = DbProviderFactories.GetFactory (cs.ProviderName); // अपरिभाषित व्यवहार यदि GetFactory एक प्रदाता नहीं मिल सकता है // रिक्त कारखाने के लिए रक्षात्मक परीक्षण वैसे भी यदि (कारखाना == रिक्त) नया अपवाद फेंक ("प्रदाता के लिए कारखाना प्राप्त नहीं कर सका \" "+ cs.ProviderName +" \ ""); // क्या कारखाने हमें सही कनेक्शन ऑब्जेक्ट दें DbConnection conn = factory.CreateConnection (); // अपरिभाषित व्यवहार यदि CreateConnection विफल हो गया तो // निरर्थक कनेक्शन के लिए जरूर किसी भी तरह से (conn == शून्य) नया अपवाद फेंक ("कारखाने से कनेक्शन प्राप्त नहीं किया जा सका"); // कनेक्शन स्ट्रिंग को जानना, कनेक्शन conn को खोलें। ConnectionString = cs.ConnectionString; Conn.Open () वापसी conn; }  

Comments

Popular posts from this blog

c++ - Linux and clipboard -

Visual Studio 2005: How to speed up builds when a VSMDI is open? -

booting ubuntu from usb using virtualbox -