2012-05-16 42 views
3

我試圖做這樣的事情:.NET和Oracle數據訪問

Public Sub (ByVal boolTest As Boolean) 
Dim objConnecton As System.Data.Common.DbConnection 
Try 

    If boolTest Then 
     objConnecton = New SqlConnection 
    Else 
      objConnecton = New OracleConnection 
    End If 
    Catch ex As Exception 

Finally 
    'Cleanup here 
End Try 

這適用於2.112.1.0版Oracle.DataAccess的,但不與10.2.0.100版本。隨着10.2.0.100版本,我得到以下編譯錯誤:

「類型‘Oracle.DataAccess.Client.OracleConnection’的值不能轉換爲‘System.Data.Common.DbConnection’」

我嘗試使用SQLConnection或OracleConnection的實例初始化連接對象,具體取決於布爾的值。

爲什麼我得到這個錯誤?

回答

4

Why do I get this error?

後來(10.2+)爲.NET在Oracle客戶端版本不從標準的.NET框架類派生,如DbConnection。如果您想要無縫地支持多個數據庫,這會帶來不必要的副作用,因爲您不能再使用System.Data.Common中的基類。

+0

感謝您指出錯誤的原因。你會使用System.Data.OracleClient.OracleConnection嗎? +1。 – w0051977

+0

@ w0051977如果它適用於您的用途,是的,它會更簡單。 –

+0

「功能性」用途是什麼意思? – w0051977

0

如何使用System.Data.IDbConnection代替?

+0

是的,您可以將您的連接實例聲明爲IDBConnection類型,因爲Oracle.DataAccess.Client.OracleConnection派生自實現該接口的System.Data.Common.DBConnection。 編輯:對不起,這適用於我的2.112.1.0,版本或OracleDataAccess,所以它看起來像我的評論將不適用於原來的海報的問題。 – Teorist