2017-02-21 6 views
0

Microsoftエンタープライズライブラリの一部であるExecute readerを使用する共通の機能に問題があります。Microsoftエンタープライズライブラリ - ExecuteReaderが閉じたDatarowを返します

全体のコードは同じくらい簡単です:

using (IDataReader dataReader = db.ExecuteReader(sqlCommand)) 
       { 
        dt.Load(dataReader); 
       } 

コードは次のような結果与えてくれるものを除き、すべてのシナリオのために完璧に動作します:プロパティIsClosedをチェックする時に

The operation is invalid. OracleDataReader is closed 

をも真であります。

グーグルは助けにはならない、以前の経験を持つ人は私に修正の道を示すことができます。

+0

はあなたが配られていないため、使用して飲み込んだ、問題のクエリが実際に結果セットを返すことばかり。この場合、エラーがないことを確認したことがありますか? –

+0

ええとクエリは、SQL Serverでチェックされて、大丈夫です、変数のスコープも良いです。関数は複数の場所から呼び出されますが、1つの場合にのみ問題があります。私はSQLCommandで異常の有無をチェックしています。エラーの原因になっている可能性が高いと仮定して、これまでのところ運はありません。 – Riddler

答えて

0

usingステートメントの前に接続が開いていることを確認してください。開いていない場合は開く必要があります。

if (db.Connection.State != ConnectionState.Open) 
{ 
    db.Connection.Open(); 
} 
+0

dbにはConnection.Stateというプロパティはありませんが、これは私が探している解決策の1つです。変数dbは、Microsoft.Practices.EnterpriseLibrary.Data.Database型です。 – Riddler

+0

OracleConnectionオブジェクトはありますか?そうであれば、その接続を開くことができるはずです。私は、[ここ](https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledatareader(v = vs.110).aspx#の最初のC#の例を参照しています) 。 –

関連する問題