如何从Windows应用程序使用不同的数据库系统

时间:2016-07-12 09:23:18

标签: c# wpf database database-connection

我正在开发一个WPF应用程序,我需要使用Entity Framework连接不同的数据库管理系统,如Oracle,MSSQL Server,MySQL和显示数据。如何实现此应用程序,以便我可以选择我想要立即连接的数据库系统。提前谢谢。

4 个答案:

答案 0 :(得分:0)

如果连接到MSSQL,则可以使用SqlConnection。您不需要下载任何库。 如果连接到MySQL,则可以使用MySqlConnection。 Download assembly from here

连接示例:

string conStr = "Data Source:127.0.0.1; Initial Catalog: DatabaseName; uid:username; pwd:password";
SqlConnection conMsSql = new SqlConnection(conStr);
MySqlConnection conMySql = new MySqlConnection(conStr);

private void OpenConnection()
{
    if(conMsSql.state != ConnectionState.Open)
        conMsSql.Open();
    if(conMySql.state != ConnectionState.Open)
        conMySql.Open();
}

答案 1 :(得分:0)

一般来说,当我有多个后端支持时,我想交替和盲目地使用,这就是我通常的想法:

  1. 在整个代码中使用if / switch语句是否可以接受?如果重复太多,那不是一个好的解决方案。 (在您的示例中,如果您只需要连接到DB,并且只能始终使用相同的SQL查询,则完全可以接受)
  2. 简单的多态/类继承是封装后端差异的好主意吗?但是,如果它产生太多锅炉板代码,那么根据后端供应商的说法,它不是一个复杂的解决方案,无法抽象出不同行为的所有微妙之处。
  3. 是否有第三方的lib封装了所有兼容的供应商?哪一个用一个很好的统一界面抽象出来?
  4. 使用Abstract Factory Pattern,让你做点3可以为你提供的......但你自己做的就是自己:可能更多的工作,比第3点更多的错误。

答案 2 :(得分:-1)

您可以将ADO.NET用于此目的。该框架提供了类似SQLClient for SQL Server,OleDb for oracle等类,用于连接和查询目的

答案 3 :(得分:-1)

您可以尝试使用App.config文件列出您的数据库连接字符串并调用它。

这样的事情:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="mysqlConnection" connectionString="data source=yourdatasource_ip;initial catalog=yourdbname;user=dbusername;password=dbpassword; default command timeout=120"/> <add name="sqlConnection" connectionString="data source=yourdatasource_ip;initial catalog=yourdbname;user=dbusername;password=dbpassword; default command timeout=120"/> <add name="oracleConnection" connectionString="data source=yourdatasource_ip;initial catalog=yourdbname;user=dbusername;password=dbpassword; default command timeout=120"/> </connectionStrings> </configuration>