2012-01-31 27 views
0

我有一個項目類,並與它有關我有一個類類和負責任的類。當我想要將一個項目對象添加到數據庫時,我從類別類中調用一個方法來獲取類別標識,併爲責任類執行相同的操作。我的意思是:來自不同類的兩個DataReader,但出現錯誤?

int categoryId = getCategoryId("Beverages"); 
int responsibleId = getResponsibleId("An Example Name"); 

這兩個方法在不同的類中,但使用類似的代碼。當我運行程序出現錯誤:

"There is already an open DataReader associated with this Command which must be closed first." 
+0

您需要發佈更多的代碼,您所使用的閱讀器或者是處置不當或不被佈置完全是。 – JonH 2012-01-31 19:32:41

回答

0

必須要麼修復您的代碼,因此,只有一個活動(開)的DataReader對象及其活性在單一的DbConnection或在連接字符串中啓用MARS(MultipleActiveResultSets=True )。

+0

我試過MARS但沒有工作,我得到了同樣的錯誤。 – 2012-02-01 08:57:21

0

我同意Mithrandir在這裏,但是對於你的問題還有另一種解決方法;我想你列出的訪問數據庫的方法(愚蠢的,我知道,但與我一起),他們都打開連接到同一個數據庫。你應該添加在你的代碼是一個最後的塊,其中關閉數據庫連接,在執行交易後:

try 
      { 
      string sql="select * from ...." 
      connection.Open(); 
      comand.CommandText = sql; 
      comand.ExecuteNonQuery(); 
      } 

    catch(SQLException) 
    { 
    } 

    finally 
    { 
    if (connection!=null) 
       { 
        connection.Close(); 
       } 
    } 
相關問題