【发布时间】:2011-06-12 21:49:32
【问题描述】:
我对 .NET 比较陌生,但我正在尝试确定是否可以使用 ADO.NET 让单个 .NET 4 应用程序同时连接到多个供应商数据库(SQL Server、Oracle、DB2 和 MySQL)和同时执行查询?
到目前为止,我发现的所有示例都是关于一次仅连接到一个数据库的。 谢谢!
【问题讨论】:
-
当然。为什么不可能?
标签: sql-server oracle ado.net db2
我对 .NET 比较陌生,但我正在尝试确定是否可以使用 ADO.NET 让单个 .NET 4 应用程序同时连接到多个供应商数据库(SQL Server、Oracle、DB2 和 MySQL)和同时执行查询?
到目前为止,我发现的所有示例都是关于一次仅连接到一个数据库的。 谢谢!
【问题讨论】:
标签: sql-server oracle ado.net db2
您只需要 4 个连接字符串和 4 个单独的 ADO Connection 对象。然后,如果您真的希望它们并行运行,那么 SLaks 所说的异步查询可以同时执行。
【讨论】:
您可以像执行一个查询一样执行两个查询。
如果您希望它们一次执行两个查询,则需要进行异步查询或使用线程。
【讨论】:
ADO.NET 框架定义了一组抽象的“DbXXX”类,例如DbConnection、DbCommand 等,由各种数据库提供程序实现,例如
用于 Sql Server 的 System.Data.dll 中的 System.Data.SqlClient.SqlConnection'
Oracle.DataAccess.dll(ODP.NET 提供程序)中用于 Oracle 的“Oracle.DataAccess.Client.OracleConnection”
MySql 等的 MySql.Data.dll 中的“MySql.Data.MySqlClient.MySqlConnection”
然后,您需要针对抽象类集设计应用程序,并在需要时使用适当的实现。大多数查询应该对所有后端都有效,但显然会有后端特定的调整,更不用说存储过程调用了。
或者,您可以使用 ORM(实体框架、Telerik OpenAccess ORM、NHibernate 等)并将大部分差异抽象到 ORM。虽然我不确定您是否可以针对多个后端使用单个实体模型(在 EF 中)。
【讨论】: