gpt4 book ai didi

database - 在 ADO.NET 中访问数据库驱动程序的 C# 通用方法

转载 作者:太空狗 更新时间:2023-10-30 01:47:23 24 4
gpt4 key购买 nike

我必须编写一个小的 C# 程序,它将以动态方式处理至少三个不同的数据库供应商(Oracle、Sybase ASE、SqlServer)。 (会根据客户的选择来选择数据库)

我决定通过 ado.net 数据提供商使用“纯”托管驱动程序。

但是,当我只是尝试连接时,我希望代码是“一行来统治所有”,就像 JDBC 所做的那样:

DriverManager.getConnection(connection_string);

相反,令人惊讶的是,我必须为每个驱动程序编写其特定代码:

SqlConnection() for SqlServer 

AseConnection() for Sybase

OracleConnection(), etc.

当然,我应该自己将所有这些封装在抽象方法和动态加载中,但我想知道为什么 .net 中不存在这样的东西

嗯,我觉得我错过了什么

最佳答案

由于您在计算机上安装了相应数据库的 .Net 提供程序,您可以使用 DbProviderFactory , 例如:

包括

using System.Data.Common;

然后尝试这样的事情:

// create the provider factory from the namespace provider
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");

// you could create any other provider factory.. for Oracle, MySql, etc...


// use the factory object to create Data access objects.
DbConnection connection = factory.CreateConnection(); // will return the connection object, in this case, SqlConnection ...

connection.ConnectionString = "read connection string from somewhere.. .config file for sample";


try
{
// open connection
connection.Open();

// create command to execute queries...
DbCommand command = connection.CreateCommand(); // create a SqlCommand, OracleCommand etc... depende of the provider factory configured.

// some logic
}
catch
{
}
finally
{
// close connection
connection.Close();
}

要知道您的应用程序可以找到哪些提供商,您可以使用 DbProviderFactories.GetFactoryClasses()方法获取 DataTable,其中包含机器上安装的每个提供程序的详细信息。

关于database - 在 ADO.NET 中访问数据库驱动程序的 C# 通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com