VB.net中ADODB和SqlClient之间的主要区别是什么

时间:2013-05-28 05:09:44

标签: vb.net

我的任务是转换和使用ADOOB连接的旧程序使用SqlClient连接。有什么区别?

3 个答案:

答案 0 :(得分:5)

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

另一方面,Sql Server本机驱动程序应该更快,如你所说,它有更好的参数支持(参数可以使用名称,而不必按顺序)。

ado库存在一些局限性,其中一些已知的局限性

  1. 不支持分层记录集。

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

  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类。

  15. 某些功能部分或不受支持

    希望有所帮助

答案 1 :(得分:2)

ADODB使用较旧的ADO库。此代码主要用于与旧代码兼容,以便更容易地向前移植旧代码。它也处于不同的抽象层次。 ADODB定义了一组标准,用于连接到任何数据库类型的对象都可以实现。 SqlClient特定于Sql Server。但是,SqlClient实现了较新的ADO.Net提供程序合同。只要有可能,即使在移植旧代码时,也更喜欢SqlClient或其他ADO.Net提供程序。

答案 2 :(得分:1)

System.Data.SqlClient namespaceMicrosoft ActiveX Data Objects 不同,但不一定要看文档不应该让你进入正确的路径,只要两者都使用SQL服务器作为后端

两者都使用连接并允许“命令”或“记录集”接口,但前者出于显而易见的原因,更紧密地集成到.Net中。您可能会发现很多实例可以删除应用程序中的VB.Net代码,因为您将在新的界面中内置该功能。