C# 具有一个类的多个数据源(ODBC、OleDB、SQL)

C# 具有一个类的多个数据源(ODBC、OleDB、SQL),c#,sql,database,oledb,dbconnection,C#,Sql,Database,Oledb,Dbconnection,我希望能够使用相同的代码从多个数据源获取数据。在我的程序中,我得到了不同数据源(可能是ODBC、OLE DB和SQL)的几个连接字符串 现在我不想为每个数据连接编写单独的代码。我可以知道连接字符串将用于哪些类(例如OleDbConnection、SqlConnection、ODBConnection)。显然,它们都是DbConnection类的继承者。我想知道我是否可以用它来编写一个类来访问所有的类?是的,您可以在.NET 2.x或更高版本中使用: 根据您的连接字符串,您应该实例化所需的连接类、

我希望能够使用相同的代码从多个数据源获取数据。在我的程序中,我得到了不同数据源(可能是ODBC、OLE DB和SQL)的几个连接字符串


现在我不想为每个数据连接编写单独的代码。我可以知道连接字符串将用于哪些类(例如OleDbConnection、SqlConnection、ODBConnection)。显然,它们都是DbConnection类的继承者。我想知道我是否可以用它来编写一个类来访问所有的类?

是的,您可以在.NET 2.x或更高版本中使用:


根据您的连接字符串,您应该实例化所需的连接类、适配器等。。。它们派生自相同的基类,因此除了初始化之外,您的代码可以是相同的。是否有一种方法可以读取适用于每个数据源的表?@user2743434,数据源之间的SQL方言存在差异,以及其他差异,例如OleDb使用位置参数,而SqlClient使用命名参数。因此,一般来说,除了最简单的情况外,SQL都是特定于提供程序的。
ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];
DbProviderFactory factory = DbProviderFactories.GetFactory(c.ProviderName);
using (IDbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = c.ConnectionString; 
    ... etc...
}