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