|
.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
|