3

私はこのようなことをしようとしています:

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

これは、Oracle.DataAccess のバージョン 2.112.1.0 では機能しますが、バージョン 10.2.0.100 では機能しません。バージョン 10.2.0.100 では、次のコンパイル エラーが発生します。

「タイプ 'Oracle.DataAccess.Client.OracleConnection' の値を 'System.Data.Common.DbConnection' に変換できません」

ブール値に応じて、SQLConnection または OracleConnection のいずれかのインスタンスで接続オブジェクトを初期化しようとしています。

なぜこのエラーが発生するのですか?

4

3 に答える 3

4

なぜこのエラーが発生するのですか?

.NET 用の Oracle クライアントの新しい (10.2+) バージョンは、.NET などの標準の .NET フレームワーク クラスから派生していませんDbConnection。これには、複数のデータベースをシームレスにサポートしたい場合に、かなり多くの作業が必要になるという残念な副作用がありますSystem.Data.Common。.

于 2012-05-16T18:23:31.363 に答える
2

Oracle の代わりに OracleConnection の Microsoft 実装を使用できます。

http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleconnection(v=vs.90).aspx

よろしくお願いします。

于 2012-05-16T18:27:20.280 に答える
0

代わりに System.Data.IDbConnection を使用するのはどうですか?

于 2012-05-16T18:28:05.857 に答える