2013-05-27 73 views
1

嗨,我正在進行移植項目。前端是在vb6上開發的,後端服務是在C++ COM上構建的。目前,我們正在將系統遷移到.Net 4.5。ADODB和SqlClient

在我的實際代碼中,前端和後端模塊都使用ADODB與他的數據庫一起工作。但是在這個遷移中,我們決定在前端VB.Net應用中使用SQLClient,後端仍然使用ADODB。

Can任何人都可以告訴我,是否有任何問題如果我們在系統中一起使用ADODB和SQLCLient。這會影響任何數據庫操作(插入,刪除,更新調用過程,觸發等)。兩者都訪問相同的架構。

謝謝

+1

從VB6到.NET 4.5嗎?祝你好運 ! – Raptor

+0

我能想到的唯一事情就是難以混合和匹配ADO和ADO .NET交易。 –

回答

2

OleDb更通用。如果您將來轉移到其他數據庫類型,很可能會有一個Ole驅動程序,您不必更改太多的代碼。另一方面,如你所說,Sql Server本地驅動程序應該更快,並且它有更好的參數支持(參數可以使用名稱,而不必按順序)。

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

  1. 分層記錄不被支持。

2.服務器端遊標(FO-RO遊標除外)僅支持Microsoft SQL Server數據庫。

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

4.Parameterized存儲過程不與Oracle數據庫支持

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

6. Recorset對象的UpdateBatch方法要求SQL源語句包含所有涉及表的鍵字段,並且不適用於舊語法JOIN語句,嵌套SELECT語句和派生表。 7.用於打開服務器端密鑰集和動態遊標的SELECT語句必須至少包含一個不可爲空的鍵列。

8.The方法不起作用,並引發與服務器端動態遊標的異常。

9.The Index,Seek,MarshalOption,Recordset類的StayInSync成員未實現並標記爲廢棄。

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

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

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

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

14.不支持ADODB.Record類。

一些的feautres的部分或不支持

希望它有助於