標籤:.net asp.net 資料庫 asp.net多資料庫 asp.net資料庫
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參數即可。