Csharp/CSharp Tutorial/ADO.Net/DbProviderFactories

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Data Provider Factory

<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.Data.rumon; using System.Configuration; using System.Data;

 class Program
 {
   static void Main(string[] args)
   {
     string dp = "provider";
     string cnStr ="YourProvider";
     DbProviderFactory df = DbProviderFactories.GetFactory(dp);
     DbConnection cn = df.CreateConnection();
     Console.WriteLine(cn.GetType().FullName);
     cn.ConnectionString = cnStr;
     cn.Open();
     DbCommand cmd = df.CreateCommand();
     Console.WriteLine("Your command object is a: {0}", cmd.GetType().FullName);
     cmd.Connection = cn;
     cmd.rumandText = "Select * From Inventory";
     DbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
     Console.WriteLine(dr.GetType().FullName);
     while (dr.Read())
       Console.WriteLine("-> Car #{0} is a {1}.",dr["CarID"], dr["Make"].ToString().Trim());
     dr.Close();
   }
 }</source>

Get the available data provider factories

<source lang="csharp">using System; using System.Data; using System.Data.rumon; using System.Collections.Generic; using System.Text;

   class Program
   {
       static void Main(string[] args)
       {
           DataTable tbl = DbProviderFactories.GetFactoryClasses();
           foreach (DataRow row in tbl.Rows)
           {
               Console.WriteLine("{0} ({1})", row["Name"], row["InvariantName"]);
           }
           
       }
   }</source>

Obtain the DbProviderFactory for SQL Server and create connection from it

<source lang="csharp">using System; using System.Data; using System.Data.rumon; class MainClass {

   public static void Main(string[] args)
   {
       DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
       using (IDbConnection con = factory.CreateConnection())
       {
           con.ConnectionString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;";
           using (IDbCommand com = con.CreateCommand())
           {
               com.rumandType = CommandType.Text;
               com.rumandText = "SELECT ID, FirstName FROM Employee";
               con.Open();
               using (IDataReader reader = com.ExecuteReader())
               {
                   while (reader.Read())
                   {
                       // Display the product details.
                       Console.WriteLine("  {0} = {1}",
                           reader["ID"],
                           reader["FirstName"]);
                   }
               }
           }
       }
   }

}</source>