CreateCommand 返回一个提供程序特有的命令对象。
CreateCommandBuilder 返回一个提供程序特有的命令创建者对象。
CreateConnection 返回一个提供程序特有的连接对象
CreateDataAdapter 返回一个提供程序特有的适配器对象
CreateParameter 返回一个提供程序特有的参数对象
如何获得一个特有的数据提供程序的工厂呢,通过使用DbProviderFactories新类即可,该类有几个静态方法,举例如下:
DbProviderFactory f = DbProviderFactories.GetFactory("System.Data.SqlClient");
GetFactory()方法取一个字符串,该字符串表示提供程序的恒定名称,在注册提供程序的配置文件中,该名称是为每个提供程序硬编码的。根据约定,提供程序的名称等于其唯一的命名空间 。
GetFactory() 列举所有的注册提供程序,并为匹配的恒定名称获得程序集和类名信息,该工厂类不是直接实例化的,而是由该方法使用映像(reflection)获取工厂类的静态属性Instance的值。该属性返回将要使用的工厂类的实例。一旦有了工厂对象,就可以调用其中的方法了。
下面说明了SqlClientFactory类(sql server .net 数据提供程序的工厂类)的CreateConnection方法内部的实现。
... {
return new SqlConnection();
}
如下实例是获取所有的提供程序列表:
... {
//DbProviderFactories.
//DbProviderFactory f = DbProviderFactories.GetFactory("System.Data.SqlClient");
DataTable providers = DbProviderFactories.GetFactoryClasses();
GridView1.DataSource = providers;
GridView1.DataBind();
}
使用多数据库的一个实例
... {
string provider = this.provider.Text;
string constring = this.connString.Text;
string commandtext = this.commandtext.Text;
DbProviderFactory fact = DbProviderFactories.GetFactory(provider);
DbConnection conn = fact.CreateConnection();
conn.ConnectionString = constring;
DbDataAdapter adapter = fact.CreateDataAdapter();
adapter.SelectCommand = conn.CreateCommand();
adapter.SelectCommand.CommandText = commandtext;
DataTable dt = new DataTable();
adapter.Fill(dt);
this.GridView2.DataSource = dt;
GridView2.DataBind();
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1611132