2013-05-28 99 views

回答

2

ADODB使用較舊的ADO庫。此代碼主要用於與舊代碼兼容,並使舊代碼向前移植更容易。它也處於不同的抽象層次。 ADODB定義了一組連接到任何數據庫類型的對象都可以實現的標準。 SqlClient特定於Sql Server。但是,SqlClient實現了較新的ADO.Net提供程序合同。只要有可能,即使在移植舊代碼時,也要使用SqlClient或其他ADO.Net提供程序。

1

System.Data.SqlClient namespaceMicrosoft ActiveX Data Objects不同,但並不是說只要在後端使用SQL服務器時,查看文檔不應該讓您處於正確的路徑。

兩者都使用的連接,並允許任何「命令」或「記錄設置」界面,但前者是,出於顯而易見的原因,更緊密地集成到.NET。您可能會發現許多應用程序中的VB.Net代碼可以被刪除的實例,因爲您可以將該功能內置到新的界面中。

5

OleDb更通用。如果您將來轉移到不同的數據庫類型,很可能會有一個Ole驅動程序,您不必更改太多的代碼。

在另一方面,SQL Server本機驅動程序應該是快如你所說,它有更好的參數支持(參數可以使用名稱,並且沒有必須按順序)。

有在ADO庫一定的侷限性以下一些被稱爲侷限性

  1. 分層記錄不被支持。

  2. 服務器端遊標(比FO-RO光標等)只適用於Microsoft SQL Server數據庫的支持。

  3. Recordset.Open方法支持多個用分號分隔的SQL語句,但不支持Connection和Command對象的Execute方法。

  4. 參數化存儲程序不與Oracle數據庫支持

  5. 異步執行被允許用於連接和記錄的對象的打開方法,但不用於連接和命令對象的Execute方法。

  6. Recorset對象的UpdateBatch方法要求SQL源語句包含所有涉及表的鍵字段,並且不適用於舊語法JOIN語句,嵌套SELECT語句和派生表。

  7. 用於打開服務器端鍵集和動態遊標必須包含至少一個非空的鍵列的SELECT語句。

  8. Move方法不起作用,並提出與服務器端動態遊標異常。

  9. 索引,搜索,記錄集類的MarshalOption,StayInSync成員不落實,並標記爲過時。

  10. Recordset類的PageSize,Clone和Find成員未實現用於鍵集和其他服務器端遊標。

  11. Command類的CommandStream,Dialect,NamedParameters和Prepared成員未實現並標記爲廢棄。

  12. Stream類的ReadText,WriteText和SkipLines方法未實現並標記爲廢棄。

  13. 不支持Connection或Recordset對象的一些動態屬性。

  14. 不支持ADODB.Record類。

一些功能部分或不支持

希望它有助於

+0

感謝這正是我需要的 –

+0

@ shaikibrahim如果它幫助好心接受答案 – 2013-05-28 06:33:09

相關問題