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

Windows Forms Discussion :

Erreur System.NullReferenceException avec MySQL


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut Erreur System.NullReferenceException avec MySQL
    Bonjour à tous !

    Je ne comprends pas pourquoi mon programme, lorsque je le compile, génère une erreur de type : "System.NullReferenceException".
    Car je n'ai pas touché la ligne en question et c'est apparu d'un jour à l'autre.

    J'utilise une classe me permettant de me connecter à ma Base de Données (MySQL) qui s'apelle "Cl_MySQL".

    Ensuite dans ma Form1, je la déclare ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Imports Comptabilité.Cl_MySQL
     
    Public Class Form1
     
        'Créer un DataSet :
        Dim Dts As DataSet
        'Créer une instance de ma classe perso' pour les requêtes
        Dim Db As Cl_MySQL
    Voilà, puis une fois que le nom d'utilisateur et le mot de passe sont vérifiés, j'ouvre ma base de données et je rempli mon "DataGridView1 & 2" (.DataSource) avec les deux tables "recette" & "dépense".

    Jusque là tout marchait bien, mais allons savoir pourquoi, maintenant mes DataGridView ne se remplissent plus. ='(

    Voici le code :

    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
     
            If (TextBox18.Text = "Utilisateur" And TextBox19.Text = "Mot_De_Passe") Then
                GroupBox7.Visible = False
                TabControl1.Visible = True
                Try
                    Db.SetVar("localhost", "root", "", "compta")
                    Dts = Db.LoadDb("recette")
                    DataGridView1.DataSource = Dts.Tables("recette")
                Catch ex As Exception
                End Try
                Try
                    Db.SetVar("localhost", "root", "", "compta")
                    Dts = Db.LoadDb("depense")
                    DataGridView2.DataSource = Dts.Tables("depense")
                Catch ex As Exception
                End Try
            Else : MessageBox.Show("Erreur! Identifiant ou Mot de Passe incorrect.", "Erreur d'identification", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, 0, False)
            End If
    Et, pour que ce soit plus simple, voici le code de ma classe, du moins la partie dont je me sert pour remplir les DataGridView :

    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
     
    Imports MySql.Data.MySqlClient ' Importation de la classe MySQL
     
    Public Class Cl_MySQL
     
        Dim HostConn As New MySQLConnection 'Pour une connexion à la base de données MySQL
        Dim Dta As MySqlDataAdapter 'Data adapter
        Dim Dts As New DataSet 'Dataset
        Dim Requete As String 'Chaîne où seront stocké les requêtes
        Dim Serv, User, Pass, Database, Table As String
     
        'Fonction d'enregistrement des variables User , Pass ,Serveur et eventuellement Database
        Function SetVar(ByVal Servv, ByVal Userv, ByVal Passv, ByVal Databasev)
            'On ferme la connection si jamais elle existe
            HostConn.Close()
            Serv = Servv
            User = Userv
            Pass = Passv
            Database = Databasev
            'On attribut les variables de la nouvelle connection
            HostConn.ConnectionString = "server=" + Serv + ";" _
                                 & "user id=" + User + ";" _
                                 & "password=" + Pass + ";" _
                                 & "database=" + Database + ""
            Return 1
        End Function
     
        'Charger la table
        Function LoadDb(ByVal Table As String)
            'On clear le Dts si jamais il y a quelque chose
            Dts.Clear()
            Try
                Requete = "SELECT * FROM " + Table + ""
                'On ouvre la connection
                HostConn.Open()
                'On execute la requete
                Dta = New MySqlDataAdapter(Requete, HostConn)
                'On rempli le Dts avec la table demandée
                Dta.Fill(Dts, Table)
                'On retourne le Dts
                Return Dts
                'S'il y a une erreur
            Catch myerror As MySqlException
                'Afficher le message d'erreur
                MessageBox.Show("Erreur de Connection à la Base de Données : " & myerror.Message)
                Return 0
            End Try
        End Function
    Voilà, sa marchait très bien hier, sa ne marche plus aujourd'hui, pourtant je n'ai rien touché par rapport à cette partie du code... Enfin je pense, car il dois bien y avoir une erreur, mais je ne fais que relire et je ne trouve pas.

    J'espère que vous aurez plus l'oeil que moi!

    Merci pour la lecture,
    CleeM.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    NullReferenceException veut dire que tu manipules un objet non instancié (ou détruit)

    vs permet le débugage en pas à pas et de connaitre ce qu'il y a dans les variables
    de plus il dit à quelle ligne il a rencontré l'erreur et permet de mettre des points d'arrêts

    à partir de là, quasiment tous les bugs sont trouvables

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Et non malheureusement il ne me spécifie rien par rapport à cette erreur, voilà exactement la ligne telle qu'elle apparait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Une exception de première chance de type 'System.NullReferenceException' s'est produite dans Comptabilité.exe
    Aucune ligne de surlignée comme d'habitude, aucune référence pour m'expliquer d'où viens l'erreur.
    De plus, le programme ne plante pas, toute fonctionne sauf que mes DataGridView sont vide. ='(

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    la ligne de l'erreur n'est indiquée qu'en mode execution dans visual studio, pas en exe

    par contre que l'erreur s'affiche veut dire que tu n'utilises pas de try catch qui peuvent aussi permettre de savoir où se produit l'erreur

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Ouip, je suis en mode execution, je lance juste le débogage.

    Pour les "try ... catch" j'en est mis un peu de partout, où aurais-je pû en oublié? Merci de m'aider!

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/01/2019, 01h12
  2. Foutu erreur de Link avec mySQL et VS2008
    Par Nixeus dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 05/03/2010, 12h22
  3. erreur libmysqlx.dll avec mysql administrator
    Par moi89 dans le forum Outils
    Réponses: 2
    Dernier message: 10/02/2008, 13h42
  4. System.NullReferenceException avec constante
    Par Le-Cortex dans le forum ASP.NET
    Réponses: 13
    Dernier message: 12/07/2007, 12h14
  5. Erreur de connexion avec Mysql -> Driver bugué
    Par kedare dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 07/02/2007, 08h47

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