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

VB.NET Discussion :

base de données sql serveur [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut base de données sql serveur
    Bonjour,
    Dans ma procedure, j'ai executer une commande sql une première fois(ligne 11). Je souhaiterais, toujours dans cette meme procedure executer une deuxième commande sql. Quand j'essaye de donner la nouvelle commande sql à oCmd, il refuse car la variable oCmd existe déjà dans la procedure (ligne 30).

    Comment attribuer la nouvelle commande sql ?

    Merci d'avance.


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
      Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            Dim cstring As ConnectionStringsSection = config.ConnectionStrings
            Dim connStr As String
            Dim strbd As StringBuilder = New StringBuilder()
          
            connStr = cstring.ConnectionStrings("TOTAL.My.MySettings.Setting").ToString()
            ' on déclare la connexion
            Dim oConn As SqlConnection = New SqlConnection(connStr)
            ' on déclare la commande
          
            Dim oCmd As SqlCommand = New SqlCommand(sql1)
    
            'ouvre la connexion
            oConn.Open()
            'on assigne la connexion à la commande
            oCmd.Connection = oConn
    
            sqlDR = oCmd.ExecuteReader()
            While sqlDR.Read()
                nbclient = nbclient + 1
                POCLIENT(nbclient, 1) = sqlDR(0)
                POCLIENT(nbclient, 7) = sqlDR(1)
    
            End While
            sqlDR.Close()
            oConn.Close()
            strbd.Clear()
    
    
            Dim oCmd As SqlCommand = New SqlCommand(sql2)
    
            'ouvre la connexion
            oConn.Open()
            'on assigne la connexion à la commande
            oCmd.Connection = oConn

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    dim sert à créer une variable, si elle existe déjà il suffit d'écrire dedans

    donc remplacer le 2ème
    Dim oCmd As SqlCommand = New SqlCommand(sql2)
    par
    oCmd = New SqlCommand(sql2)

    après il est inutile d'en créer une 2ème, tu peux réutiliser la 1ère, tu peux juste changer le commandTexte qui contient la requete

    il est aussi inutile de fermer la connexion pour la rouvrir dans la même milliseconde !

    et au passage il faut utiliser sqlconnection et sqlcommand dans des blocs using/end using
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    Merci pour la réponse, je vais vérifier.

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    Maintenant, j'ai un nouveau message d'erreur ligne 42

    Vous me dites de ne pas fermer la connexion mais il m'affiche d'autres messages d'erreur. Je suis un peu debutant.

    ExecuteReader nécessite une Connection ouverte et disponible. La connexion est actuellement fermée.



    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
            Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            Dim cstring As ConnectionStringsSection = config.ConnectionStrings
            Dim connStr As String
            Dim strbd As StringBuilder = New StringBuilder()
            Dim compte As String
     
            RAZ()
     
            connStr = cstring.ConnectionStrings("TOTAL.My.MySettings.Setting").ToString()
            ' on déclare la connexion
            Dim oConn As SqlConnection = New SqlConnection(connStr)
            ' on déclare la commande
     
            Dim oCmd As SqlCommand = New SqlCommand(SQL1)
     
            'ouvre la connexion
            oConn.Open()
            'on assigne la connexion à la commande
            oCmd.Connection = oConn
     
            sqlDR = oCmd.ExecuteReader()
            While sqlDR.Read()
                nbclient = nbclient + 1
                POCLIENT(nbclient, 1) = sqlDR(0)
                POCLIENT(nbclient, 7) = sqlDR(1)
     
            End While
            sqlDR.Close()
            oConn.Close()
            strbd.Clear()
     
     
     
     
     
                    oCmd = New SqlCommand(strbd.ToString)
     
     
     
                    oCmd.Connection = oConn
     
                    sqlDR = oCmd.ExecuteReader()
                    While sqlDR.Read()
                        nbclient = nbclient + 1
                        'POCLIENT(nbclient, 1) = sqlDR(0)
                        'POCLIENT(nbclient, 7) = sqlDR(1)
     
                    End While

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Tu as retiré l'ouverture de ta connexion mais pas la fermeture de celle-ci entre les 2 query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            sqlDR.Close()
            oConn.Close()
            strbd.Clear()
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Déjà, il y a une bizarrerie ou alors un problème de titre :

    - Dans le titre il est question de MySql
    - Dans le code, c'est le jeu de classes spécifiques à Sql Server qui est utilisé.

    Merci de préciser l'environnement car là c'est flou.

    Maintenant, j'ai un nouveau message d'erreur ligne 42
    Vous me dites de ne pas fermer la connexion mais il m'affiche d'autres messages d'erreur..
    Quels message d'erreur ????

    on est pas devin.

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    ExecuteReader nécessite une Connection ouverte et disponible. La connexion est actuellement fermée.

    C'est sql server, je me suis trompé

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    il faut réfléchir un peu à ce que tu écris et ne pas faire du copier coller bêtement

    moi quand je vois ton code je lis

    ouverture de connexion
    exécution
    fermeture de connexion
    exécution

    et tu as le message d'erreur "la connexion est fermée"


    je te laisse méditer sur ce résumé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    En enlevant la ligne 29, A la ligne42 il me dit :


    Un DataReader associé à cette Command est déjà ouvert. Il doit d'abord être fermé.

  10. #10
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Je pense que ton problème pourrait venir du fait que même si tu as bien fermé ton DataReader, le Garbage Collector ne l'a pas encore nettoyé et que donc il est toujours associé à ton SqlCommand.

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sqlDR.Close()
    sqlDR.Dispose()
    Si cela ne marche pas crée un nouveau SqlCommand pour ta deuxième opération.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par infosam76 Voir le message
    Si cela ne marche pas crée un nouveau SqlCommand pour ta deuxième opération.
    C'est ce qu'il fait. (ligen 36).

    Mais je t'accorde que la relecture du code pique un peu les yeux et le nommage bizarre des variables n'aide pas.

    Comme en plus on ignore ce que contienne les requêtes et la procédure "RAZ", on y va un peu à l'aveugle.

    L'absence de "using" sur les objets utilisés n'aide pas non à y comprendre quelque chose.

  12. #12
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    C'est ce qu'il fait. (ligen 36).

    Mais je t'accorde que la relecture du code pique un peu les yeux et le nommage bizarre des variables n'aide pas.

    Comme en plus on ignore ce que contienne les requêtes et la procédure "RAZ", on y va un peu à l'aveugle.

    L'absence de "using" sur les objets utilisés n'aide pas non à y comprendre quelque chose.
    Je l'ai vu mais après avoir posté ;-) autant pour moi ...

    Il serait judicieux je pense qu'on ai TOUT le code concerné par ces 2 opérations. Donc cela va de la connexion, en passant par les requêtes etc ...
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  13. #13
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    RAZ = remise a zero de variable

    Ne concerne pas l'acces à la base de données.

  14. #14
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par aiglevb Voir le message
    RAZ = remise a zero de variable

    Ne concerne pas l'acces à la base de données.
    Et les requêtes ???

  15. #15
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2012
    Messages : 36
    Par défaut
    infosam76 a trouvé la solution.

    J'ai fermé la connexion et j'ai fait un .dispose. Ensuite j'ai rouvert une autre connection et ca marche.

    Merci à tous de m'avoir aidé pour ce problème.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2008, 11h10
  2. Base de données SQL serveur et VB
    Par Arnaud Malabeux dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/06/2007, 16h43
  3. PB Insertion en base de données (Sql serveur)
    Par titou250 dans le forum ASP
    Réponses: 1
    Dernier message: 11/07/2006, 17h15
  4. perte focus lien base de données sql serveur
    Par prodi_64 dans le forum ASP
    Réponses: 1
    Dernier message: 13/05/2006, 00h20
  5. Accès à une base de données SQL serveur
    Par TALNA dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/11/2005, 09h09

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