Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक एप्लिकेशन डेटाबेस अज्ञेयवादी रखना (ADO.NET बनाम एनकैप्सुलेटिंग डीबी लॉजिक)

<ब्लॉकक्वॉट>

नोट: यह उत्तर प्रासंगिक है यदि आप ORM (जैसे Entity Framework या NHibernate) या LINQ से SQL के बजाय मूल ADO.NET 2 कार्यक्षमता का उपयोग करने का निर्णय लेते हैं।

आइए मान लें कि आपके पास app.config . में परिभाषित एक कनेक्शन स्ट्रिंग है :

<connectionStrings>
    <add name="SomeConnection"
         providerName="System.Data.SqlClient"
         connectionString="..." />
</connectionStrings>

providerName . की उपस्थिति पर ध्यान दें विशेषता और उसका मूल्य। आप किसी अन्य डीबी प्रदाता के लिए एक मूल्य भी डाल सकते हैं, उदा। System.Data.SQLite

(ध्यान दें कि गैर-मानक प्रदाता, यानी वे जो डिफ़ॉल्ट रूप से .NET फ्रेमवर्क में नहीं हैं, उन्हें पहले app.config में पंजीकृत होना चाहिए। या क्लाइंट मशीन के machine.config . में ।)

अब, आप निर्दिष्ट डेटाबेस के साथ पूरी तरह से प्रदाता-अज्ञेय फैशन में निम्नानुसार काम कर सकते हैं:

using System.Configuration;  // for ConfigurationManager
using System.Data;           // for all interface types
using System.Data.Common;    // for DbProviderFactories

var cs = ConfigurationManager.ConnectionStrings["SomeConnection"];
//                                              ^^^^^^^^^^^^^^^^

var factory = DbProviderFactories.GetFactory(cs.ProviderName);
//                                           ^^^^^^^^^^^^^^^

using (IDbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = cs.ConnectionString;
    //                            ^^^^^^^^^^^^^^^^^^^
    connection.Open();
    try
    {
        using (IDbCommand command = connection.CreateCommand())
        {
            ...  // do something with the database
        }
    }
    finally
    {
        connection.Close();
    }
}

ध्यान दें कि यह कोड केवल इंटरफ़ेस प्रकारों के साथ कैसे काम करता है। एकमात्र स्थान जहां आप किसी विशेष DB प्रदाता को इंगित करते हैं वह providerName . के माध्यम से होता है app.config . में विशेषता मान फ़ाइल। (मैंने उन सभी स्थानों को चिह्नित किया है जहां app.config . से एक सेटिंग है ^^^ . के साथ लिया जाता है स.)

आगे पढ़ना:

  • ADO.NET 2.0 बेस क्लास और फ़ैक्टरियों के साथ जेनेरिक कोडिंग:
    मेरे उत्तर के समान, लेकिन अधिक विवरण में जाता है।

  • ADO.NET प्रबंधित प्रदाता और डेटासेट डेवलपर केंद्र:
    अन्य बातों के अलावा, उपलब्ध ADO.NET डेटाबेस प्रदाताओं की एक अनुक्रमणिका शामिल है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या Oracle का SYS_GUID () UUID RFC 4122 अनुरूप है?

  2. अद्यतन ओरेकल को मर्ज करें पंक्तियों का एक स्थिर सेट प्राप्त करने में असमर्थ

  3. मानों के एक ही ब्लॉक से संबंधित मानों को अलग किए बिना कई अद्वितीय मान प्राप्त करें

  4. INSERT . से पहले UNIQUE बाधा बनाम जाँच

  5. ओरेकल के साथ रेल पर रूबी को कैसे कॉन्फ़िगर करें?