Oracle 接続を開くとき、接続オブジェクトが null です

私は同じ問題を抱えていて、C# プロジェクト参照に追加して解決しましたOracle.ManagedDataAccess Oracle.DataAccess の代わりに .
これを行うには、(Tools / Nugget Package Manager / Nugget Package Manager for Solution) に移動します。 Oracle References を参照し、Oracle.ManagedDataAccess を選択します。 .
次に、ManagedDataAccess への実際の DataAccess 呼び出しを次のようにコメントまたは削除する必要があります。

//using Oracle.DataAccess.Client; 
//using Oracle.DataAccess.Types;
using Oracle.ManagedDataAccess.Client;

接続コードを変更する必要はありません。コーディングを使用するだけです。動作したら、プロジェクト参照から Oracle.DataAccess を削除できます


ODP.NET を使い始めたときも同じ問題がありました。

コードは次のように調整できます:

try
{
    OracleConnection con;
    con = new OracleConnection();

    con.ConnectionString = "DATA SOURCE=<DSOURCE_NAME>;PERSIST SECURITY INFO=True;USER ID=******;PASSWORD=*******";

    con.Open();
}
catch (OracleException ex)
{
    Console.WriteLine("Oracle Exception Message");
    Console.WriteLine("Exception Message: " + ex.Message);
    Console.WriteLine("Exception Source: " + ex.Source);
}
catch (Exception ex)
{
    Console.WriteLine("Exception Message");
    Console.WriteLine("Exception Message: " + ex.Message);
    Console.WriteLine("Exception Source: " + ex.Source);
}

エラーの詳細については、こちらをご覧ください:ORA-12154

問題はあなたの Data Source です 接続文字列で。次のようになっていると思います:Data Source=Server.Source TNSNAMES.ORA で見つけることができるように

問題は、ODP.NET が TNSNAMES.ORA を読み取らないことです。 Visual Studio と同じようにファイルします。

この問題を解決するには複数の選択肢があります:

<オール>
  • あなたの Web.Config を編集してください または App.config ファイルを作成して、ODP.NET にソースの処理方法を指示します。
  • あなたのTNSNAMES.ORAをコピーしてください .exe と同じディレクトリにあるファイル . (ウェブアプリでない場合)
  • Data Source を変更する エイリアスの代わりに長いバージョンを書くために。例えば。 :Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)......)))
  • 私のお気に入りの方法は #3 です .問題が発生したときのデバッグがはるかに簡単になります。

    詳細については、データ ソース セクションをご覧ください。 Oracle Data Provider for .NETの構成ドキュメントの。