asp.net dbproviderfactory(提供者工廠模型)

來源:互聯網
上載者:User

標籤:.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參數即可。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.