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

How to use different database systems from windows application

我正在开发一个 WPF 应用程序,我需要连接不同的数据库管理系统,如 Oracle、MSSQL Server、MySQL 并使用 Entity Framework 显示数据。我怎样才能实现这个应用程序,这样我就可以选择我现在想要连接的数据库系统。提前致谢。

您可以使用 ADO.NET 来达到这个目的。 类 提供的框架,如 SQLClient for SQL Server,OleDb for oracle etc.for connecting and querying purposes

如果连接到 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();
}

您可以尝试使用 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>

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

  1. 是否可以在整个代码中使用 if/switch 语句?如果重复太多,这不是一个好的解决方案。 (在你的例子中,如果你只需要连接到数据库,并且只有相同的 sql 查询,这是完全可以接受的)
  2. 简单的多态性/class 继承是封装后端差异的好主意吗?但是,如果它生成太多样板代码,那么它就不是一个足够复杂的解决方案,无法抽象出取决于后端供应商的不同行为的所有细微之处。
  3. 是否有第 3 方库封装了所有要兼容的供应商?并使用统一的界面抽象所有内容?
  4. 使用 Abstract Factory Pattern,让我们做第 3 点可以为您提供的...但是您自己做,为了自己:可能比第 3 点做更多的工作,更多的错误。