Yazar girişi yapmak için tıklayın
ozgurclub banner

Nasıl Birden Çok Veritabanını destekleyen uygulamalamalar Gerçekleyebiliriz

.Net te bütün veritabanı sınıfları aynı veritabanı sınıfları  aynı interface/Arayüz  üzerinden implement(miras gibi) e alırlar.

Bunun dışında DbProviderFactory kullanarakta uygulmalar gerçeklenebilir

Bugün bunun için ufak bir kod denemesi yaptım ve bu kodları sizlerle paylaşmak istiyorum....

Şayet  istek gelmesi durumunda daha derinlere dalabiliriz...

Ve işte kod c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
//Şayet oracle dll sinide add reference edersek
//oracle ı da kullanabiliriz

namespace ConsoleApplication1
{
    class Program
    {
        enum DataProvider
        { SqlServer,Oledb,Odbc,Oracle,None }
        static void Main(string[] args)
        {
            Console.WriteLine("very simple connecyion factory");
            Console.WriteLine("***");
            IDbConnection baglanti = BaglantiGetir(DataProvider.SqlServer);
            baglanti.ConnectionString = "Data Source=.;Initial Catalog=defir;Integrated Security=SSPI;";
            baglanti.Open();
            Console.WriteLine("OzgurClub");
            IDbCommand cmd = KomutGetir(DataProvider.SqlServer);
            cmd.Connection = baglanti;
            cmd.CommandText = "select * from deneme";
            IDataReader okuyucu;
            okuyucu = cmd.ExecuteReader();
            while (okuyucu.Read()) {
                Console.WriteLine("-- {0} --",okuyucu["adi"]);
            }
            okuyucu.Close();
            Console.ReadLine();
            baglanti.Close();
           
        }

        static IDbCommand KomutGetir(DataProvider dp) {
            IDbCommand cmd=null;
            switch (dp) {
                case DataProvider.Oledb:
                    cmd = new OleDbCommand();
                    break;
                case DataProvider.SqlServer:
                    cmd = new SqlCommand();
                    break;
            }
            return cmd;
        }
        static IDbConnection BaglantiGetir(DataProvider dp) {
            IDbConnection conn = null;
            switch (dp) {
                case DataProvider.SqlServer:
                    conn = new SqlConnection();
                    break;
                case DataProvider.Oledb:
                    conn = new OleDbConnection();
                    break;
            }
            return conn;
        }//end BaglantiGetir...
    }
}

görüldüğü üzerinden veritabanı sınıflarını İnterfaceler üzerinden gerçekleyerek
Çoklu veritabanı destekleyen uygulamalar yazabiliriz

DbProviderFactory Static sınıfını kullanarakta yapabilirz

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string dp = System.Configuration.ConfigurationManager.AppSettings["provider"];
            string cnStr = System.Configuration.ConfigurationManager.AppSettings["cnStr"];

            //get the factory provider
            DbProviderFactory df=DbProviderFactories.GetFactory(dp);
            DbConnection cn = df.CreateConnection();
            Console.WriteLine(cn.GetType().FullName);
            DbCommand cmd = df.CreateCommand();
            cmd.Connection = cn;
            cmd.CommandText = "select * from deneme";

            DbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            while (dr.Read()) {
                Console.WriteLine(dr["adi"].ToString());
            }
            dr.Close();
            Console.ReadLine();

        }
    }
}

Sağlıcakla Kalın .... ve lütfen yorum yazın...

Kategori : C#.Net
Etiketler : Çoklu Veritabanı ,CSharp ,DbProviderFactory ,
Tarih : 24.07.2010
Ekleyen : ozgur

Tasarım ve Kodlama && SonDefterim.com Sürüm 1.1