如何在不使用多个对象的情况下连接到VB.net中的OLEDB和ODBC

如何在不使用多个对象的情况下连接到VB.net中的OLEDB和ODBC,vb.net,ado.net,odbc,oledb,Vb.net,Ado.net,Odbc,Oledb,使用ADODB时,我能够使用OLEDB提供程序或ODBC连接的连接字符串,并使用相同的连接对象。转换为ADO.NET并使用OleDB.OleDBConnection后,我发现您无法指定ODBC连接字符串,因为OLE DB的.NET Framework数据提供程序不支持ODBC的OLE DB提供程序(MSDASQL)。我不想使用多个连接对象(System.Data.OLEDB和System.Data.ODBC)进行数据访问,因为我们的程序可以访问数百个地方的数据。人们如何在不使用多个连接对象的情况

使用ADODB时,我能够使用OLEDB提供程序或ODBC连接的连接字符串,并使用相同的连接对象。转换为ADO.NET并使用OleDB.OleDBConnection后,我发现您无法指定ODBC连接字符串,因为OLE DB的.NET Framework数据提供程序不支持ODBC的OLE DB提供程序(MSDASQL)。我不想使用多个连接对象(System.Data.OLEDB和System.Data.ODBC)进行数据访问,因为我们的程序可以访问数百个地方的数据。人们如何在不使用多个连接对象的情况下允许连接到数据库?谢谢

您可以使用来抽象数据访问。它允许您为抛出的每个连接字符串对象获取正确连接类型的实例

给定以下连接字符串配置:

<configuration>
  <connectionStrings>
    <clear/>
    <add name="NorthwindSQL" 
     providerName="System.Data.SqlClient" 
     connectionString=
     "Data Source=MSSQL1;Initial Catalog=Northwind;Integrated Security=true"
    />
    <add name="NorthwindAccess" 
     providerName="System.Data.OleDb" 
     connectionString=
     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Northwind.mdb;"
    />
    <add name="NorthwindODBC" 
     providerName="System.Data.Odbc"
     connectionString="Driver=ODBCDriver;server=ODBCServer;"
  </connectionStrings>
</configuration>
//Read connection string
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["NorthwindAccess"];

//Create connection
DbProviderFactory factory = DbProviderFactories.GetFactory(setting.ProviderName);
using(DbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = setting.ConnectionString;
    // Use the connection ...
    DbCommand command = connection.CreateCommand();
    // ...

}