1

嗨,我正在做一个迁移项目。前端基于 vb6 开发,后端服务基于 C++ COM 构建。目前,我们正在将系统迁移到 .Net 4.5。

在我的实际代码中,前端和后端模块都使用 ADODB 来处理数据库。但是在这次迁移中,我们决定在前端 VB.Net Applciation 中使用 SQLClient,而后端仍然使用 ADODB。

谁能告诉我如果我们在一个系统中同时使用 ADODB 和 SQLCLient 有什么问题吗?这会影响任何数据库操作(插入、删除、更新调用过程、触发等)。两者都在访问相同的架构。

谢谢

4

1 回答 1

2

OleDb 更通用。如果您将来迁移到不同的数据库类型,那么它很有可能会有一个 Ole 驱动程序,而您不必更改那么多代码。

另一方面,正如您所说,Sql Server 原生驱动程序应该更快,并且它具有更好的参数支持(参数可以使用名称并且不必按顺序排列)。

ado 库中存在一些限制以下一些是已知限制

  1. 不支持分层记录集。

2. 服务器端游标(FO-RO 游标除外)仅支持 Microsoft SQL Server 数据库。

3. Recordset.Open 方法支持多条分号分隔的SQL 语句,但Connection 和Command 对象的Execute 方法不支持。

4.Oracle数据库不支持参数化存储过程

5.Connection和Recordset对象的Open方法允许异步执行,但Connection和Command对象的Execute方法不允许。

6.Recorset 对象的UpdateBatch 方法要求SQL 源语句包含所有涉及的表的关键字段,并且不适用于旧语法JOIN 语句、嵌套SELECT 语句和派生表。7. 用于打开服务器端键集和动态游标的 SELECT 语句必须至少包含一个不可为空的键列。

8.Move 方法不起作用并引发服务器端动态游标异常。

9. Recordset 类的Index、Seek、MarshalOption、StayInSync 成员没有实现,被标记为过时。

10. Recordset 类的 PageSize、Clone 和 Find 成员没有为键集和其他服务器端游标实现。

11.Command 类的CommandStream、Dialect、NamedParameters 和Prepared 成员未实现并被标记为过时。

12.Stream类的ReadText、WriteText、SkipLines方法没有实现,标记为废弃。

13.Connection 或 Recordset 对象的一些动态属性不受支持。

14.不支持 ADODB.Record 类。

部分功能或不支持某些功能

希望能帮助到你

于 2013-05-28T05:22:48.150 回答