2017-02-21 87 views
0

我面臨的問題是使用屬於Microsoft Enterprise Library的Execute reader的常見功能。Microsoft Enterprise Library ExecuteReader返回關閉Datarow

總體代碼是非常簡單:

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

的代碼完全適用於除一,其給出了以下結果所有的場景:在檢查物業IsClosed

The operation is invalid. OracleDataReader is closed 

也是如此。

谷歌搜索沒有任何幫助,任何有經驗的人都可以爲我解決問題。

+0

您是否驗證過在這種情況下沒有發生錯誤,因此沒有被處理,因此被使用吞噬並且所討論的查詢實際上正在返回結果集? –

+0

Ya Query很好,在SQL Server中檢查過它,變量的作用域也很好。該功能從多個位置調用,僅在一種情況下存在問題。我一直在檢查SQLCommand的異常情況,假設它只是錯誤的根源,至今還沒有運氣。 – Riddler

回答

0

在你的using聲明之前,你應該檢查連接是否打開,如果沒有打開,那麼你必須打開它。

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

db沒有Connection.State屬性,但這是我正在尋找的解決方案。變量db的類型爲Microsoft.Practices.EnterpriseLibrary.Data.Database – Riddler

+0

您是否有OracleConnection對象?如果是這樣,那麼你應該能夠打開連接。作爲參考,我使用[這裏]的第一個C#示例(https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledatareader(v = vs.110).aspx#Remarks) 。 –