asp.net dbproviderfactory(提供程序工厂模型)
DbProviderFactories该类有几个静态方法
SQL Server提供程序工厂对象的方法
DbProviderFactory fact=DbProviderFactories.GetFactory("System.Data.Client");
GetFactory 方法接收一个字符串,该字符串代表提供程序的名称。这个名称位于machine.config文件中,他会对所有已注册的提供程序进行枚举,返回与该名称匹配的程序集和类名信息。工厂类并不会直接被实例化(即所谓的单例模式)。一旦获得工厂对象,就可以调用如下方法
CreateCommand 返回代表提供程序特定的命令对象
CreateCommandBuilder 返回提供程序特定的命令生成器对象
CrateConnection 返回提供程序特定的连接对象
CreateDataAdapter 返回提供程序特定的数据适配器对象
CreateParameter 返回提供程序特定的参数对象
若要创建提供程序工厂,必须提供连接字符串和提供程序名称。此示例演示如何通过以“System.Data.ProviderName”固定格式传递提供程序名称来从应用程序配置文件中检索连接字符串。代码循环访问 ConnectionStringSettingsCollection。成功时代码返回 ProviderName;否则返回 null。如果提供程序有多项,则返回找到的第一项。
按提供程序名称检索连接字符串
// Retrieve a connection string by specifying the providerName.
// Assumes one connection string per provider in the config file.
static string GetConnectionStringByProvider(string providerName)
{
// Return null on failure.
string returnValue = null;
// Get the collection of connection strings.
ConnectionStringSettingsCollection settings =
ConfigurationManager.ConnectionStrings;
// Walk through the collection and return the first
// connection string matching the providerName.
if (settings != null)
{
foreach (ConnectionStringSettings cs in settings)
{
if (cs.ProviderName == providerName)
returnValue = cs.ConnectionString;
break;
}
}
return returnValue;
}
创建 DbProviderFactory 和 DbConnection
示例演示如何通过以“System.Data.ProviderName”格式传递提供程序名称和连接字符串来创建 DbProviderFactory 和 DbConnection 对象。 成功时返回 DbConnection 对象;出错时返回 null(在 Visual Basic 中为 Nothing)。
代码通过调用 GetFactory 获取
DbProviderFactory。 然后,CreateConnection
方法创建 DbConnection 对象并将
ConnectionString 属性设置为连接字符串。、// Given a provider name and connection string,
// create the DbProviderFactory and DbConnection.
// Returns a DbConnection on success; null on failure.
static DbConnection CreateDbConnection(
string providerName, string connectionString)
{
// Assume failure.
DbConnection connection = null;
// Create the DbProviderFactory and DbConnection.
if (connectionString != null)
{
try
{
DbProviderFactory factory =
DbProviderFactories.GetFactory(providerName);
connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
}
catch (Exception ex)
{
// Set the connection to null if it was created.
if (connection != null)
{
connection = null;
}
Console.WriteLine(ex.Message);
}
}
// Return the connection.
return connection;
}
这样如果我们要更改数据库只需在配置文件中更改相应的连接字符串,以及更改CreateDbConnection的providerName参数即可。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。