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 :)

8
demandé sur dooburt 2009-05-08 13:30:57

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()
14
répondu Kirtan 2009-05-08 09:33:47

Vous réellement oublié de Open connexion:

        db.Open()
        Using dr As SqlDataReader = cmd.ExecuteReader()
2
répondu Anton Gogolev 2009-05-08 09:34:47

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.

1
répondu Syed Salman Akbar 2011-12-21 19:00:34