2014-04-07 36 views
1

我希望能夠使用相同的代碼從多個數據源獲取數據。在我的程序裏面,我得到了幾個連接字符串,用於不同的數據源(特別是ODBC,OLE DB和SQL)。具有一個類的多個數據源(ODBC,OleDB,SQL)

現在我不想爲每個數據連接編寫單獨的代碼。我可以告訴連接字符串應該與哪些類一起使用(例如,OleDbConnection,SqlConnection,OdbcConnection)。顯然他們都是DbConnection類的繼承者。我想知道我能否用它寫出一個能夠訪問它們的類?

+0

根據您的連接字符串,你應該實例您需要的連接類,適配器等等...它們是從相同的基類派生的,所以除了初始化你的代碼可以是相同的。 – Bogdan

回答

1

是的,你可以做到這一點在.NET 2.x或更高使用DbProviderFactory

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name]; 
DbProviderFactory factory = DbProviderFactories.GetFactory(c.ProviderName); 
using (IDbConnection connection = factory.CreateConnection()) 
{ 
    connection.ConnectionString = c.ConnectionString; 
    ... etc... 
} 
+0

有沒有辦法讀出適用於每個數據源的表? – user2743434

+0

@ user2743434,數據源之間的SQL方言存在差異,以及其他差異,例如OleDb使用位置參數而SqlClient使用命名參數。所以一般來說,除了最簡單的情況外,你的SQL將是特定於提供程序的。 – Joe

相關問題