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

C# Discussion :

Mysql et les valeurs NULL [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Mysql et les valeurs NULL
    bonjour

    je suis sur visual studio 2013
    le pc client et sur un windows 8.1 et le serveur linux ubuntu base de données MYSQL
    je suis débutant dans visual c#
    j'ai écrit ce code qui fonctionne très bien sauf que des fois la base de données possède des tables avec des lignes a valeur NULL

    ce qui me donne ce message
    Nom : Capture.PNG
Affichages : 564
Taille : 14,5 Ko

    et 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string constring = "datasource = ALDEBARAN; port = 3306; username = root; password = azerty";
                string Query = "select * from phone.Table1 where ID_table = '" + comboBox1.Text + "' ;";
                MySqlConnection conDatabase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDatabase);
                MySqlDataReader myReader;
     
                try
                {
                    conDatabase.Open();
                    myReader = cmdDataBase.ExecuteReader();
     
                    while (myReader.Read())
                    {
                        string ssid = myReader.GetInt32("ID_table").ToString();
                        string sSoc = myReader.GetString("Societer");
                        textBox4.Text = sSoc;
     
                    }
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    J'ai essayer de chercher mais je n'ai pas trouver.
    Aurait t'il une astuce de modifier ce code pour accepter les valeur NULL

    merci pour vos réponses

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    l'exception pourrait venir de ton DataReader qui est null ou de ton 'ID_table', pour être sûr il faudrait le nom exact de l'exception.
    Pour info quand même, il est possible de savoir si une valeur renvoyée par MySql est DBNull (différent de null) avec la fonction IsDBNull.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Bonjour

    Oui mon exception et un problème avec mon datareader qui et null.

    Le problème et que je ne sais pas comment faire pour qui ne bloque pas avec une valeur null.

    Quant a mon ID_table c'est une clef primaire avec incrémentation.

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    C'est que la fonction MySqlCommand.ExecuteReader() renvoie null
    (du coup tu peux pas appeler d'attribut/fonction membre sur le MySqlDataReader récupéré, vu qu'il n'existe pas).

    Déjà cela pourrait venir du fait que tu n'ouvres pas ta connexion (MySqlConnection.Open()) avant de requêter dessus ...
    Et n'oublie pas de la fermer après tes manip' (MySqlConnection.Close()).
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je ne spéculerais pas autant, et rien de sert de faire des hypothèses quand on est dans ce cas, il peux afficher ex.stacktrace dans le message box pour avoir la ligne qui passe en erreur et ainsi être fixé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    bonjour

    Si ma connexion fonctionne car si il y a une valeur dedans il me la retourne.

    Comme sur la photos.

    En faite dans ma boucle il faudrait un bout de code qui me teste les valeur null et ne remplie rien pour éviter l'erreur
    mais je ne sais pas comment l’écrire

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    J'ai oublier de vous dire que le message d'erreur apparaît que quant il y a une valeur nul (donc sur la photo on voit une valeur dans Societer + le message)

    c'est par ce que j'ai été 2 fois sélectionner dans la combobox

    désoler

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et lire ce qu'on te répond, non ?

    Citation Envoyé par jopopmk Voir le message
    Pour info quand même, il est possible de savoir si une valeur renvoyée par MySql est DBNull (différent de null) avec la fonction IsDBNull.
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    et lire ce qu'on te répond, non ?
    ne soit pas agressif avec moi.

    je suis un débutant et pas un pros comme toi.

    ton histoire de IsDBNull. je ne sais pas comment l’interpréter jai l'impression que avec MYSQL c'est pas tous a fais pareil que SQL serveur.

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je n'étais pas agressif, mais juste interrogatif

    qu'est-ce qui te fais dire que ce n'est pas pareil ?

    sinon avec google tu peux trouver ta réponse plus rapidement qu'ici ... (mysql test dbnull C#)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Ton exception n'est donc pas le DataReader qui est null et l'exception n'est pas levée lors de l'appel à MySqlDataReader.Read().
    Sinon, si tu lis la définition de MySqlDataReader (je te conseille de regarder la doc off') tu verras qu'il est dérivé (entre autre) de la classe IDataRecord.
    Il possède donc nécessairement cette fonctionnalité IsDBNull
    Plus je connais de langages, plus j'aime le C.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    bonjour

    Voici un code que j'ai trouver

    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
    static void GetMyValue(MySqlConnection myConnection)
    {
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM Test.AllTypes");
    cmd.Connection = myConnection;
    myConnection.Open();
    try
    {
    MySqlDataReader reader = cmd.ExecuteReader();
    reader.Read();
     
    for (short i = 0; i < reader.FieldCount; i++)
    {
    if (reader.IsDBNull(i))
    Console.WriteLine("NULL");
    else
    {
    object someValue = reader.GetValue(i);
    Console.WriteLine(someValue.ToString());
    }
    }
     
    reader.Close();
    }
    finally
    {
    myConnection.Close();
    }
    }
    mais j’ai besoin de vous pour confirmer ma traduction.

    ceci et une boucle qui vérifie les valeurs NULL dune ligne et que si il détecte une valeur NULL il passe a la suivante, et quand il trouve une valeur non NULL, il arrête l’incrémentation et la boucle avant la déconnexion

    ceci et t'il exacte.

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca ne sert à rien de chercher un bout de code pour une fonction simple
    le mieux est de comprendre le fonctionnement
    monreader.GetString (ou autre) ne peut fonctionner que s'il y a une valeur (sinon il plante)
    donc dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string sSoc = "";
    if (!reader.IsDBNull(reader.GetOrdinal("Societer")))
           {myReader.GetString("Societer");}
    tu ne feras le GetString que s'il n'y a pas null, et s'il y a null sSoc sera une chaine vide
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    et pour info une société ca s'écrit comme ca, comme le "j'ai trouvé"
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    bonjour

    OK je te remercie pour tous je vais tester ton code ce soir chez moi

    Citation Envoyé par Pol63 Voir le message
    et pour info une société ca s'écrit comme ca, comme le "j'ai trouvé"
    on a tous un talon d’Achille

    moi c'est le français

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    bonjour

    et bien ce bout de code marche très bien en vous remerciant pour tous

    pour ceux que ça intéresse.

    Bien j'ai du ajouter une ligne pour réinitialiser le champ en vide.

    Sinon si dans la combobox je sélectionne un id qui me donne un champ nul tous va bien, mais si je retourne dans la combobox et que la je suis sur un champ remplie, la tous va bien aussi la ou ça se gâte.

    Et que en retournant dans la combobox je ré sélectionne un champ vide et bien ce champ garde l'ancien enregistrement.

    j'ai donc ajouter textBox4.Clear();
    ce qui me fais ceci et excuser moi pour mon amateurisme

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
      private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string constring = "datasource = ALDEBARAN; port = 3306; username = root; password = azerty";
                string Query = "select * from phone.Table1 where ID_table = '" + comboBox1.Text + "' ;";
                MySqlConnection conDatabase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDatabase);
                MySqlDataReader myReader;
     
                try
                {
                    conDatabase.Open();
                    myReader = cmdDataBase.ExecuteReader();
     
                    while (myReader.Read())
                    {
                        //string ssid = myReader.GetInt32("ID_table").ToString();
     
                        textBox4.Clear();
                        string sSoc = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Societer")))
                        {
                            myReader.GetString("societer");
                            sSoc = myReader.GetString("Societer");
                            textBox4.Text = sSoc;
                        }
     
                        textBox2.Clear();
                        string sNom = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Nom")))
                        {
                            myReader.GetString("Nom");
                            sNom = myReader.GetString("Nom");
                            textBox2.Text = sNom;
                        }
     
                        textBox3.Clear();
                        string sPre = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Prenom")))
                        {
                            myReader.GetString("Prenom");
                            sPre = myReader.GetString("Prenom");
                            textBox3.Text = sPre;
                        }
     
                        textBox18.Clear();
                        string sSex = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Sexe")))
                        {
                            myReader.GetString("Sexe");
                            sSex = myReader.GetString("Sexe");
                            textBox18.Text = sSex;
                        }
     
                        textBox11.Clear();
                        string sSer = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Service")))
                        {
                            myReader.GetString("Service");
                            sSer = myReader.GetString("Service");
                            textBox11.Text = sSer;
                        }
     
                        textBox10.Clear();
                        string sPos = "";
                        if (!myReader.IsDBNull(myReader.GetOrdinal("Poste")))
                        {
                            myReader.GetString("Poste");
                            sPos = myReader.GetString("Poste");
                            textBox10.Text = sPos;
                        }
     
                    }
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    un grand merci Pol63

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

Discussions similaires

  1. Les jointures... et les valeurs nulles !
    Par PJ_56 dans le forum SQL
    Réponses: 2
    Dernier message: 25/04/2006, 23h33
  2. [Excel] Ne pas tracer les valeurs nulles d'un graphe
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2006, 19h00
  3. MySql et PHP : valeur NULL
    Par fffonck dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/02/2006, 17h02
  4. order by sans les valeurs NULL
    Par pendragon509 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2005, 12h31
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02

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