我的任务是转换和使用ADOOB连接的旧程序使用SqlClient连接。有什么区别?
答案 0 :(得分:5)
OleDb更通用。如果您将来移动到不同的数据库类型,那么它很可能会有一个Ole驱动程序,您不必更改代码。
另一方面,Sql Server本机驱动程序应该更快,如你所说,它有更好的参数支持(参数可以使用名称,而不必按顺序)。
ado库存在一些局限性,其中一些已知的局限性
不支持分层记录集。
仅Microsoft SQL Server数据库支持服务器端游标(FO-RO游标除外)。
Recordset.Open方法支持多个以分号分隔的SQL语句,但Connection和Command对象的Execute方法不支持。
Oracle数据库不支持参数化存储过程
Connection和Recordset对象的Open方法允许异步执行,但Connection和Command对象的Execute方法不允许异步执行。
Recorset对象的UpdateBatch方法要求SQL源语句包含所有相关表的关键字段,并且不能使用旧语法JOIN语句,嵌套SELECT语句和派生表。
用于打开服务器端键集和动态游标的SELECT语句必须至少包含一个不可为空的键列。
Move方法不起作用,并使用服务器端动态游标引发异常。
Recordset类的Index,Seek,MarshalOption,StayInSync成员未实现,并标记为已废弃。
Recordset类的PageSize,Clone和Find成员未针对键集和其他服务器端游标实现。
Command类的CommandStream,Dialect,NamedParameters和Prepared成员未实现,并标记为已废弃。
Stream类的ReadText,WriteText和SkipLines方法未实现,并标记为已废弃。
不支持Connection或Recordset对象的一些动态属性。
不支持ADODB.Record类。
某些功能部分或不受支持
希望有所帮助
答案 1 :(得分:2)
ADODB使用较旧的ADO库。此代码主要用于与旧代码兼容,以便更容易地向前移植旧代码。它也处于不同的抽象层次。 ADODB定义了一组标准,用于连接到任何数据库类型的对象都可以实现。 SqlClient特定于Sql Server。但是,SqlClient实现了较新的ADO.Net提供程序合同。只要有可能,即使在移植旧代码时,也更喜欢SqlClient或其他ADO.Net提供程序。
答案 2 :(得分:1)
System.Data.SqlClient namespace与Microsoft ActiveX Data Objects 不同,但不一定要看文档不应该让你进入正确的路径,只要两者都使用SQL服务器作为后端
两者都使用连接并允许“命令”或“记录集”接口,但前者出于显而易见的原因,更紧密地集成到.Net中。您可能会发现很多实例可以删除应用程序中的VB.Net代码,因为您将在新的界面中内置该功能。