C# - 数据库连接列表字符串提供程序

标签 c# sql database provider

我正在尝试开发具有多个数据库提供程序的 dotnet 应用程序,我需要了解最常用数据库的 ConnectionString 和提供程序。我正在使用 System.DBCommon。这是我的代码:

public  class DBConnector
{

  public void ConectDatabase()
  {
      {
          string connectionString =
            "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
            "(HOST=MYHOST)(PORT=1527))(CONNECT_DATA=(SID=MYSERVICE)));" +
            "User Id=MYUSER;Password=MYPASS;"; //Connection String
          string provider =
            "Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess"; //I need this  for the most used databases (Mysql, PostgreSQL, SqlServer)


          using (DbConnection conn = (DbConnection)Activator.
            CreateInstance(Type.GetType(provider), connectionString))
          {
              conn.Open();
              string sql =
                "select distinct owner from sys.all_objects order by owner";
              using (DbCommand comm = conn.CreateCommand())
              {
                  comm.CommandText = sql;
                  using (DbDataReader rdr = comm.ExecuteReader())
                  {
                      while (rdr.Read())
                      {
                          string owner = rdr.GetString(0);
                          Console.WriteLine("{0}", owner);
                      }
                  }
              }
          }
      }
  }

我在这个站点找到了连接字符串 https://www.connectionstrings.com/

但我也需要提供商。 谢谢

最佳答案

连接字符串属性中的提供者名称不是类而是命名空间,例如System.Data.SqlClient 不是类而是命名空间,在该命名空间下您有 SqlConnection、SqlCommand 等。

您可以尝试查找所有实现 IDbConnection 接口(interface)的类,然后基于该类型创建一个 IDbConnection:

var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(s => s.GetTypes())
    .Where(p => typeof(IDbConnection).IsAssignableFrom(p) && p.IsClass);

foreach(var dbConnection in types)
{
    Console.WriteLine(dbConnection);
}

安装 MySQL 和 Oracle 包后,这是结果列表

  • System.Data.SqlClient.SqlConnection
  • System.Data.OleDb.OleDbConnection
  • 系统.Data.Odbc.OdbcConnection
  • System.Data.Common.DbConnection
  • MySql.Data.MySqlClient.MySqlConnection
  • Oracle.ManagedDataAccess.Client.OracleConnection

您可以在这里查看源代码 https://github.com/kblok/StackOverflowExamples/blob/master/AspNetDemoProject/AspNetDemoProject/Demos/ProvidersList.aspx.cs

关于C# - 数据库连接列表字符串提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836802/

相关文章:

php - 创建数据库表的最佳方法是为不同的用户提供不同的列

c# - 将 WPF 应用程序连接到 MySQL 数据库

c# - 将 SqlParameter 添加到 SqlParameterCollection 时出现 NullReferenceException

c# - 应用程序资源的数据绑定(bind)窗口标题

sql - 为每个唯一标识符选择具有最新日期的记录

c# - 如何使用sql计算日期差异

php - 无法使用 ssh php mysql 创建数据库

c# - 枚举作为 CheckBoxList 的数据源

c# - 我可以从 WindowsPrincipal 获取 Active Directory 属性吗?

java - 方法耗时太长