Problème pour recupéré le status de la connection

Résolu
XIIX Messages postés 17 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 22 mai 2011 - 21 mai 2011 à 20:31
XIIX Messages postés 17 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 22 mai 2011 - 22 mai 2011 à 12:38
Bonjour,

J'essaye d'avancé en VB.net sur un projet que je me suis donné pour essayer d'apprendre le VB.net

alors je me suis fais une connection a un serveur Mysql grace a ODBC :

Donc j'importe ma Lib ODBC comme sa :

Imports System.Data.Odbc


Et voici mon code :

    Private Sub Connection_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connection.Click
        Try
            Dim connStr As String = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;DATABASE=test;Password=root"
            Dim Connection As New System.Data.Odbc.OdbcConnection(connStr)
            Connection.Open()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error...")
        End Try
    End Sub


Le problème est que j'arrive a afficher en cas d'erreur (avec le Try/Catch) mais j'aimerai faire une Msgbox dans le cas ou la connexion serai réussi.
Mais j'ai beau mettre des IF sa veux pas :( donc j'aimerai bien un coup de main s'il vous plait.

Merci ! =)

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
22 mai 2011 à 04:31
Oui, et bien c'est ce que je te disais : Cet objet possède une propriété .State.
Il te suffit donc de la tester.
Un petit coup d’œil à l'aide en ligne t'aurait fait gagner du temps.

        Dim co_mysql As New System.Data.Odbc.OdbcConnection(connStr)
        Try
            With co_mysql
                .Open()
                Do While .State = ConnectionState.Connecting
                    Application.DoEvents()
                Loop
                If .State = ConnectionState.Open Then MsgBox("Connexion Ok")
            End With
        Catch ex As Exception
            ' ...
        End Try
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
21 mai 2011 à 20:49
Salut

Regarde voir si ton objet "Connection" (*) possède une propriété .State.
Après le .Open, si le Catch ne s'est pas déclenché, il faudrait tester ce .State.
Je pense que, juste après un .Open, il doit être en "Connecting" et il faut attendre (Do-Loop) qu'il fournisse le statut "Connected".
Regarde voir dans les constantes de cet objet pour trouver les bonnes valeurs.

(*) Très mauvaise idée d'appeler une variable de manière aussi proche (voire égale) d'un mot clé du langage : gare aux erreur que cela peut entrainer.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
XIIX Messages postés 17 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 22 mai 2011
21 mai 2011 à 20:59
Merci pour ta reponse mais malheureusement sa ne veux pas :(

j'ai changer l'appel =) merci pour l'info ^^

    Private Sub Connection_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Connection.Click
        Try
            Dim connStr As String = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;DATABASE=test;Password=root"
            Dim co_myqsl As New System.Data.Odbc.OdbcConnection(connStr)
            co_myqsl.Open()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error...")
        End Try
    End Sub


Alors du coup j'ai fais "co_mysql.State" mais State ne fais pas partie des Propriétés :'(
0
XIIX Messages postés 17 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 22 mai 2011
21 mai 2011 à 21:01
Désolé du doublons !

C'est pas
Dim co_myqsl As New System.Data.Odbc.OdbcConnection(connStr)
co_myqsl.Open()

Mais bien
Dim co_mysql As New System.Data.Odbc.OdbcConnection(connStr)
            co_mysql.Open()


Erreur de touche !

Ps: on ne peux pas éditer ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
22 mai 2011 à 04:32
PS : Attention à l'endroit où tu dimensionnes tes variables : Dans ton exemple, ta connexion n'est valide qu'à l'intérieur de ta Sub et disparaitra à la sortie.
0
XIIX Messages postés 17 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 22 mai 2011
22 mai 2011 à 12:38
Yes ! Merci Jack

J'ai sortis mes DIM de la Private sub et je les ai mis sous le "Public Class Form1" =)

Bref en tout cas merci ! :D
0