IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Impossible de fermer une base de données en lecture


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 32
    Points
    32
    Par défaut Impossible de fermer une base de données en lecture
    Je retombe sur le même problème qu'il y a peu de temps, lorsque je fais une lecture dans ma BDD il n'y a pas de fermeture d'effectuée (alors que je la demande expressément !), et donc lorsque je charge à nouveau la page, il tente à nouveau d'ouvrir la connexion. Comme elle n'a pas été fermée, ca plante.

    Voila le bout de code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "GESTION_DEMANDES"
     
    valeur = "3444"
    requete = "SELECT * FROM uf WHERE uf.num_uf ='"& valeur &"';"
    Set Reco = Conn.Execute(requete)
     
    Conn.close     'devrait fermer la BDD
    Set Conn = nothing   'devrait détruire l'objet Conn
    Set Reco = nothing   'détruit l'objet Reco
    Voila, si je fais exécuter deux fois ce code, il devrait lire deux fois le meme nuplet, en ouvrant et fermant la BD à chaque fois. Or, la deuxième fois, il affiche ce message d'erreur:

    Provider error '80004005'

    Erreur non spécifiée

    /maquette/NA_tests.asp, line 28

    Puisqu'il tente d'ouvrir une BD déjà ouverte, et avec le meme objet connexion...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Tu ne fermes pas ton recordset, enfin si la totalité du code est presente.

    D'une maniere generale, je te conseille :

    S'il s'agit d'une requete INSERT, UPDATE ou DELETE, d'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objetConnexion.Execute (chaineSQL)
    S'il s'agit d'une requete SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set Objetrecordset=Server.CreateObject("ADODB.REcordset")
    ObjetREcordset.Open ChaineSQL, ObjetConnexion
    'Traitement
    ObjetREcordSet.Close
    Set ObjetRecordset = Nothing

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    J'ai repris ton code, et je l'ai utilisé pour mes tests en l'adaptant à ma BD:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Set ObjetConnexion = Server.CreateObject("ADODB.Connection")
    ObjetConnexion.Open "GESTION_DEMANDES"
     
    valeur = "3444"
    ChaineSQL = "SELECT num_uf FROM uf WHERE uf.num_uf ='"& valeur &"';"
     
    Set ObjetRecordset=Server.CreateObject("ADODB.Recordset") 
    ObjetRecordset.Open ChaineSQL, ObjetConnexion
     
    Response.write(ObjetRecordset("num_uf"))
     
    ObjetRecordSet.Close 
    Set ObjetRecordset = Nothing 
    ObjetConnexion.Close
    Set ObjetConnexion = Nothing
    C'est juste pour tester, ce qui signifie que j'affiche le champ à partir duquel je faisais ma recherche dans la BD, mais c'est peu important.

    J'ai toujours le même problème, à savoir que ma connexion n'est pas fermée à lors du:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ObjetConnexion.Close
    Set ObjetConnexion = Nothing
    Puisque dès que j'exécute une deuxième fois ce code, alors qu'il devrait m'afficher une deuxième fois la même chose, il m'affiche le message d'erreur que j'ai donné dans mon premier post sur la ligne de l'ouverture de la connexion.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    Es tu certain que tu ne doubles pas le parametre que tu recuperes ?

    Fais un response.write de ta chaineSQL avant de l'executer, pour voir si elle est identique la deuxieme fois

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Dans la mesure où le code est contenu sur une page et que je ne fais que rafraichir deux fois cette page pour exécuter deux fois le code, et dans la mesure où la seule variable à la requete SQL est contenue dans une variable ("valeur") inscrite en dur, je ne vois pas comment les deux chaines SQL feraient pour être différentes d'une fois sur l'autre... C'est bien ca le probleme !

    A moins que je n'ai pas compris ce que tu voulais dire

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Points : 52
    Points
    52
    Par défaut
    Gwenn n'a pas tort, fait un response.write de chaine SQL et regarde ce que ca te dit et fait nous en part.

    Cordialement,
    Nicolas

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    J'entends bien requiemforadream

    Moi non plus je ne vois pas pourquoi il y a le pb, il faut essayer de comprendre en faisant des tests

    Encadre la lecture du recordset par un test :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If not Recorset.EOf Then
     
    Else
    End IF
    D'autre part, ton champ est une valeur numérique ou chaine ?

    Et enleves le ; à la fin de ta chaine sql

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Vous allez rire: j'ai rebooté le PC (à tout hasard), et maintenant ca marche parfaitement.
    Y'a pas de smiley qui se tire une balle ?

    Enfin en tous cas, merci pour votre aide et le temps que vous avez pu passer à m'aider


    Pour ceux que ca intéresse, le code final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    valeur = "3444"
    ChaineSQL = "SELECT num_uf FROM uf WHERE uf.num_uf ='"& valeur &"'"
    Response.write(ChaineSQL &"<br>")
     
    Response.write("ouverture de la première connection<br>")
    Set ObjetConnexion5 = Server.CreateObject("ADODB.Connection")
    ObjetConnexion5.Open "GESTION_DEMANDES"
     
    Set ObjetRecordset=Server.CreateObject("ADODB.Recordset") 
    ObjetRecordset.Open ChaineSQL,ObjetConnexion5
     
    Response.write(ObjetRecordset("num_uf")&"<br>")
     
     
    Response.write("fermeture du premier recordset<br>")
    ObjetRecordSet.Close 
    Set ObjetRecordset = Nothing 
    Response.write("fermeture de la première connection<br>")
    ObjetConnexion5.Close
    Set ObjetConnexion5 = Nothing
    et ce queca affiche :

    SELECT num_uf FROM uf WHERE uf.num_uf ='3444'
    ouverture de la première connection
    3444
    fermeture du premier recordset
    fermeture de la première connection

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Impossible de fermer une base de donnée
    Par ne2sbeal dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/08/2009, 16h32
  2. Impossible d'ajouter une base de données à l'arborescence
    Par pat29 dans le forum Entreprise Manager
    Réponses: 0
    Dernier message: 09/12/2008, 18h45
  3. fermer une base de donnée
    Par ozerte dans le forum IHM
    Réponses: 2
    Dernier message: 13/10/2008, 18h33
  4. Impossible d'ouvrir une base de donnée
    Par anna1 dans le forum Access
    Réponses: 2
    Dernier message: 03/05/2006, 22h55
  5. [D7] DLL impossible de connecter à une base de données
    Par Magnus dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/09/2005, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo