Хорошо, я спросил об этой самой ошибке ранее на этой неделе и получил некоторые полезные ответы, и, без сомнения, ситуация значительно улучшилась с тех пор, как я начал следовать рекомендациям.Для ExecuteReader требуется открытое и доступное соединение. Текущее состояние соединения закрыто.
Тем не менее, теперь я использую «правильный» метод передовой практики для доступа к базе данных. Я все еще получаю эту ошибку для некоторых функций, и я не могу заставить ее исчезнуть для этого блока. Вот мой код:
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 и т. Д.), Но использование закрывается после себя, не так ли?
Предложения приветствуются :)