わかりました、今週初めにこのエラーについて尋ねたところ、非常に役立つ回答がいくつかありました。提案に従って始めてから、間違いなく状況は大幅に改善されました.
ただし、現在、データベースにアクセスするための「正しい」ベストプラクティスの方法を使用していますが、一部の関数でこのエラーが発生し、そのブロックでエラーを消すことができません。これが私のコードです:
Public Shared Function doesBasketExist(ByVal baskethash As String) As Boolean
Dim _r As Boolean
Using db As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("pitstopConnectionString").ConnectionString)
Using cmd As New SqlCommand("doGetBasketByHash", db)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@baskethash", baskethash)
Using dr As SqlDataReader = cmd.ExecuteReader()
If dr.HasRows() = True Then
_r = True
Else
_r = False
End If
dr.Close()
End Using
End Using
End Using
Return _r
End Function
今、私が何をしても、ExecuteReader にはオープンで利用可能な接続が必要です。接続の現在の状態は閉じています。この接続で。このクラス内で同じものと呼ばれるオブジェクトを持つ関数 (cmd、dr など) がありますが、Using はそれ自体の後にクローズアップしますか?
提案を歓迎します:)