我正在尝试开发具有多个数据库提供程序的 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
关于C# - 数据库连接列表字符串提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836802/