2013-04-28 70 views
0

我有這個奇怪的錯誤,我還找不到解決方案。每當我必須在數據庫中插入數據時,我都有一個函數。它的實際工作,因爲當我檢查數據庫條目,他們實際上在那裏。數據閱讀器與連接必須關閉錯誤

但是我有這個煩人的錯誤「已經有一個打開的數據閱讀器與連接必須關閉」。我找不到一個方法來閱讀它。

這是函數:

Sub InputDataValues(ByVal StrQwery As String) 
    Try 
     myconn.Open() 
     Dim stquery As String = StrQwery 
     Dim smd As MySqlCommand 
     smd = New MySqlCommand(stquery, myconn) 
     smd.ExecuteReader() 

     smd.ExecuteReader().Close()//I added this when I wanted to get rid if the mistake 
     myconn.Close() 

    Catch ex As Exception 
     Dim ErrorMessage As String = "alert('" & ex.Message.ToString() & "');" 
     Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", ErrorMessage, True) 
     myconn.Close() 
    End Try 
    myconn.Close() 
End Sub 

這是我怎麼稱呼它幾次下來代碼:

InputDataValues(StrQwery) 

如果有人凸輪給我一個提示,我將不勝感激。

這是怎麼看當我把它改成的ExecuteNonQuery

Sub InputDataValues(ByVal StrQwery As String) 
    Try 
     myconn.Open() 
     Dim stquery As String = StrQwery 
     Dim retValue As Integer 
     Dim smd As MySqlCommand 
     smd = New MySqlCommand(stquery, myconn) 
     retValue = smd.EndExecuteNonQuery() 

     myconn.Close() 

    Catch ex As Exception 
     Dim ErrorMessage As String = "alert('" & ex.Message.ToString() & "');" 
     Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", ErrorMessage, True) 
     myconn.Close() 
    End Try 
    myconn.Close() 
End Sub 
+0

嘗試'smd.ExecuteNonQuery',而不是'smd.EndExecuteNonQuery'。第二個是異步操作。 'EndExecuteNonQuery'需要一個參數,'ExecuteNonQuery'不需要。 – Tim 2013-04-28 02:38:26

回答

0

你可以使用的ExecuteNonQuery取代的ExecuteReader因爲你只是插入數據。 在你coede,我的猜測是每次你調用ExecuteReader你得到一個新的閱讀器,所以你應該打電話給你創建的第一個關閉。

+0

讓我試試吧。請稍等片刻 – meks 2013-04-28 01:19:30

+0

我應該刪除'smd.ExecuteReader()。Close()'嗎? – meks 2013-04-28 01:20:07

+0

應該是'smd.ExecuteNonQuery()'? – meks 2013-04-28 01:21:53

相關問題