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 :

SQL Null Reference Exeption


Sujet :

C#

  1. #1
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut SQL Null Reference Exeption
    Bonjour a tous,

    alors voila, je souhaite réaliser une requête SQL, pour le moment, sur deux tables avec 6 champs (ca évoluera en dynamique, mais pour le moment j'ai un probleme en amont et je ne sais pas comment m'y prendre :s).

    voici déjà le code que j'ai pour le moment :

    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
     public int LigneExist()
            {
                int i = 0;
                string RqSQL;
     
                string[] listeChamps;
                listeChamps = new string[6];
                listeChamps[1] = "Pers_FirstName";
                listeChamps[2] = "Pers_LastName";
                listeChamps[3] = "Comp_Name";
                listeChamps[4] = "Pers_PhoneNumber";
                listeChamps[5] = "Comp_CompanyId";
     
                RqSQL = "select Pe.Pers_FirstName, Pe.Pers_LastName, Co.Comp_Name, Pe.Pers_PhoneNumber, Co.Comp_CompanyId ";
                RqSQL += "FROM Person Pe, Company Co ";
                RqSQL += "Where Pe.Pers_CompanyId = Co.Comp_CompanyId";
     
                m_Que.SQL = RqSQL;
     
                m_Que.SelectSql();
                while (!m_Que.eof)
                {
                    Console.WriteLine("Nom : {0}, Prenom : {1}, Id : Société : {2}, Numero de telephone {3}, : Id Societe {4}", 
                        m_Que["Pers_FirstName"].ToString(), 
                        m_Que["Pers_LastName"].ToString(),
                        m_Que["Comp_Name"].ToString(),
                        m_Que["Pers_PhoneNumber"].ToString(),
                        m_Que["Comp_CompanyId"].ToString());
                    i++;
                    m_Que.Next();
                }
                Console.WriteLine(i);
                Console.ReadKey();
                return i;
            }
    sur la ligne du console.writeline il me retourne une erreur :
    La référence d'objet n'est pas définie à une instance d'un objet. NullReferenceExeption was unhandled.
    Sans forcement me donner du code a copie coller betement, je souaiterai comprendre l'erreur pour pouvoir l'éviter a l'avenir.

    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 184
    Points : 4 501
    Points
    4 501
    Par défaut
    enleve les .ToString()
    et ca ira mieux

    Dans la base de donner il doit y avoir des champs non initialisé (NULL) donc un de tes objets (m_Que["..."]) est à null.
    Et donc quand tu fais un null.ToString() ca marche pas bien

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 69
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Je ne suis pas sûr, mais c'est peut être possible si l'un des champs d'une ligne retournée vaut null. Ou alors l'une de tes colonnes que tu spécifie n'existe pas.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Points : 305
    Points
    305
    Par défaut
    La solution pour traiter les valeurs null est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.IsDBNull(m_Que["champ1"]) ? "" : m_Que["champ1"].ToString();

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Le ToString est totalement superflu dans un Console.WriteLine ou String.Format
    Pour le reste, effectivement il y a de grandes chances que ta requête rammène des nulls.

  6. #6
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    effectivement, c'est au moment des données NULL que ca brouille.

    J'ai un peu modifier la donne, les informations vont etre enregistrées dans un fichier plat, donc pas de probleme de NULL ou pas.

    Par contre, avant d'enregistrer je dois virer les ";" et les retour chariot, donc je dois faire un Replace, or, sur une valeur NULL il est pas content.

    J'ai testé le bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Convert.IsDBNull(m_Que["champ1"]) ? "" : m_Que["champ1"].ToString();
    mais sans succés, il me dit
    Only assignment, call, increment, decrement, and new object expressions can be used as a statement

Discussions similaires

  1. Instance de user control => null reference
    Par Dude1205 dans le forum VB.NET
    Réponses: 7
    Dernier message: 20/08/2007, 11h28
  2. Null Reference Exception
    Par mischa dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/06/2007, 11h59
  3. [SQL] affecter la valeur SQL NULL si la variable est vide
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/03/2007, 18h44
  4. [MySQL] Utilisation de la valeur SQL NULL
    Par pierre50 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/03/2006, 14h22
  5. [pl/sql] null <> null.......
    Par Nadine dans le forum Oracle
    Réponses: 7
    Dernier message: 04/03/2005, 18h02

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