ExecuteReader nécessite une Connexion ouverte et disponible. La connexion est fermée
Ok, j'ai posé des questions sur cette erreur en début de semaine et j'ai eu des réponses très utiles et sans doute les choses se sont radicalement améliorées depuis que j'ai commencé à suivre les suggestions.
cependant, maintenant que j'utilise la méthode "correct", best practice pour accéder à la base de données, j'obtiens toujours cette erreur sur certaines fonctions et je ne peux pas l'obtenir pour disparaître pour ce bloc. Voici mon code:
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
maintenant, peu importe ce que je fais, je comprends: ExecuteReader nécessite une ouverture et Connexion disponible. La connexion est fermée. sur cette connexion. J'ai des fonctions avec des objets appelés la même chose dans cette classe (cmd, dr etc. mais ferme après lui-même n'est-ce pas?
Suggestions sont les bienvenus :)
3 réponses
je pense que vous avez oublié d'ouvrir la connexion.
ouvrir avant cette ligne:
cmd.Parameters.AddWithValue("@baskethash", baskethash)
l'Aide -
db.Open()
Vous réellement oublié de Open
connexion:
db.Open()
Using dr As SqlDataReader = cmd.ExecuteReader()
une des raisons pour cela serait que votre connexion ne pourrait pas s'ouvrir du tout. Quelle que soit l'exception qui vient à la " SqlConnection.Ouvrir" instruction est supprimé. Si le problème n'est pas dans votre application, il se peut que le serveur ne soit pas en mesure de vous accorder une connexion. Peut-être à cause d'une fuite de connexion dans votre application ou dans une autre base de données hébergée sur le même serveur.