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 :

Fonction pour connexion BDD MySQL


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2023
    Messages : 5
    Par défaut Fonction pour connexion BDD MySQL
    Bonjour à tous,

    Nouveau sur le forum, je me tourne vers vous pour m'aider à résoudre un problème que je n'arrive pas à solutionner, malgré des heures et des heures de recherches et de tests.

    Je me suis lancé dans le développement d'une application métier pour ma nouvelle activité professionnelle.
    Le gros de l'application se base sur de la lecture/écriture en base.

    Je cherche à réaliser une fonction que je puisse appeler afin d'ouvrir un connexion à la base et effectuer un test de validité de connexion,
    pour ensuite pouvoir faire mes requêtes.

    Le code fonctionne correctement lorsque je le copie/colle aux endroits où il est nécessaire.
    Par contre quand je le place dans une fonction et que je l'appelle dans le code d'une autre Form, cela ne fonctionne pas.

    Auriez-vous s'il vous plaît une idée de ce que je peux rater?

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Class BDD
            Shared server As String = "127.0.0.1"
            Shared prt As String = "3306"
            Shared user As String = "root"
            Shared pass As String = "************"
            Shared db As String = "dbs*******"
            Shared conn As MySqlConnection
            Shared str As String
            Shared cmd As New MySqlCommand
            Shared dr As MySqlDataReader
     
            Shared Function TestConnexionDB() As Boolean
                Try
                    str = "server=" & server & ";user=" & user & ";database=" & db & ";port=" & prt & ";password=" & pass
                    conn = New MySqlConnection(str)
     
                    If conn.State = ConnectionState.Closed Then
                        conn.Open()
                        If ConnectionState.Open Then
                            Return True
                            conn.Close()
                        Else Return False
                            'MessageBox.Show("Connection BDD Failed!", "Connection", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        End If
     
                    End If
                Catch ex As Exception
                    MessageBox.Show(ex.Message.ToString)
                End Try
     
            End Function
     
            Shared Function OpenConnexionDB()
                Try
                    str = "server=" & server & ";user=" & user & ";database=" & db & ";port=" & prt & ";password=" & pass
                    conn = New MySqlConnection(str)
     
                    If conn.State = ConnectionState.Closed Then
                        conn.Open()
                        If ConnectionState.Open Then
                            Return True
                        Else
                            Return False
                            MessageBox.Show("Connection BDD Failed!", "Connection", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        End If
                    End If
                Catch ex As Exception
                    MessageBox.Show(ex.Message.ToString)
                End Try
            End Function

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 001
    Par défaut
    Il est très joli ton code, tout en transparence.
    Tellement transparent qu'on a du mal à le voir !!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2023
    Messages : 5
    Par défaut
    Citation Envoyé par popo Voir le message
    Il est très joli ton code, tout en transparence.
    Tellement transparent qu'on a du mal à le voir !!
    Désolé, avec les bonnes balises ça semble ok et lisible

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 576
    Par défaut
    Return fait sortir directement de la fonction donc les instructions situées après ne sont pas exécutées.
    Les chemins qui passeraient par les catch, ne retournent à priori rien (il doit y avoir des warning à ce sujet)
    Sinon comment utilises-tu ta classes et qu'est-ce qui ne fonctionne pas ? (message d'erreur)

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Il semble y avoir un problème de scope de variable aussi je pense.
    Ceci devrait être probablement déclaré comme Public Shared:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Shared conn As MySqlConnection
    Mais à voir comment cette classe est appelée.
    Et comme dit plus haut, Return a pour effet de quitter la routine immédiatement et le code qui suit ne sera pas exécuté (exemple: conn.Close() dans TestConnexionDB), à moins d'utiliser une directive Finally pour du "cleanup" au sein d'un bloc try/catch.

    Mais en réalité, cette routine TestConnexionDB est parfaitement inutile et redondante. Tout ce que vous devez faire c'est utiliser OpenConnexionDB et fermer la connexion une fois le test accompli.

    Ici la connexion se fait en local mais pour une connexion réseau, il peut être utile de gérer la reconnexion en cas de coupure réseau.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2023
    Messages : 5
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Il semble y avoir un problème de scope de variable aussi je pense.
    Ceci devrait être probablement déclaré comme Public Shared:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Shared conn As MySqlConnection
    Mais à voir comment cette classe est appelée.
    Et comme dit plus haut, Return a pour effet de quitter la routine immédiatement et le code qui suit ne sera pas exécuté (exemple: conn.Close() dans TestConnexionDB), à moins d'utiliser une directive Finally pour du "cleanup" au sein d'un bloc try/catch.

    Mais en réalité, cette routine TestConnexionDB est parfaitement inutile et redondante. Tout ce que vous devez faire c'est utiliser OpenConnexionDB et fermer la connexion une fois le test accompli.

    Ici la connexion se fait en local mais pour une connexion réseau, il peut être utile de gérer la reconnexion en cas de coupure réseau.
    Bon, je reprends ce message de ma part qui n'est plus que partiellement utile.
    Voir mon dernier post.

    Reste cet aspect qui m'intéresse beaucoup:
    A terme, j'aimerais effectivement taper un bdd distante, mais je n'ai pas la moindre idée de comment gérer la reconnexion en cas de coupure réseau.
    Ceci dit je prend bonne note de ce point et vais tâcher de creuser la question!

  7. #7
    Membre à l'essai
    Homme Profil pro
    Autre
    Inscrit en
    Janvier 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2023
    Messages : 5
    Par défaut
    Citation Envoyé par umfred Voir le message
    Return fait sortir directement de la fonction donc les instructions situées après ne sont pas exécutées.
    Les chemins qui passeraient par les catch, ne retournent à priori rien (il doit y avoir des warning à ce sujet)
    Sinon comment utilises-tu ta classes et qu'est-ce qui ne fonctionne pas ? (message d'erreur)
    Alors, effectivement j'ai des warnings comme quoi les fonctions ne retournent pas une valeur pour tous les chemins du code.
    Je ne comprenais pas pourquoi!
    Je pensais que les Catch retournaient la Messagebox, hors, si les Return font sortir directement... forcément...
    Il faut que je solutionne la suppression des Catch maintenant

    J'ai essayé de comprendre et de m'inspirer de code glané sur le net, mes bases limitées de VB remontent à longtemps.
    Je fais sans aucun doute des erreurs de débutant.


    J'ai créé une classe Clients avec les variables et les procédures, une classe BDD pour les fonctions OpenConnection etc.
    Je te passe le reste.
    Pour le cas précis:
    -Remplissage des champs du formulaire client
    -Validation -> appel de procédure de la classe Clients pour récupérer les champs, former la requête SQL
    -Appel de la fonction pour ouvrir la connexion à la base (dans ma procédure de la classe Clients)
    -Lancer la requête

    Je ne sais pas si je suis très clair.

    Je peux essayer de c/c le code, mais je ne suis pas sûr que ce soit clair en dehors des containers respectifs.

Discussions similaires

  1. [PHP 7] Fonction connexion BDD mysql to mysqli
    Par guigui69 dans le forum Langage
    Réponses: 1
    Dernier message: 10/04/2020, 12h15
  2. [MySQL] connexion bdd mysql
    Par Philosophiste dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/07/2008, 18h58
  3. [RegEx] trier un fichier txt pour alimenter bdd mysql
    Par chooky97150 dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2008, 01h43
  4. [WB11] Configurer la connexion bdd (mysql)
    Par zev dans le forum WebDev
    Réponses: 1
    Dernier message: 07/01/2008, 01h32
  5. Probleme connexion BDD mysql avec applet
    Par lancer83 dans le forum Applets
    Réponses: 25
    Dernier message: 01/08/2007, 11h15

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