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 :

Détermination de la valeure d'un objet


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut Détermination de la valeure d'un objet
    Bonjour,

    J'aimerais que le code suivant entre dans le switch lorsque le champ ne contient pas la valeur null. Pourtant, lorsque dtr[c.Column.Name] est de type object{System.DBNull}, on entre dans le switch?

    Pourtant, dans la base de donnée, le champ est bien à null. Quel devrait être ma condition pour filtrer cette condition?

    ps voir image du debug en attache
    merci

    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
     foreach (DataRow dtr in dataSet.Tables[0].Rows)
                {
                    foreach (DataColumn c in dataSet.Tables[0].Columns)
                    {
                        Console.WriteLine(dtr[c.ColumnName]);
     
                        if (dtr[c.ColumnName] != null)
                        {
                            switch (c.ColumnName)
                            {
                                case "idsResult":
                                    myResult.idsResult = Convert.ToInt32(dtr[c.ColumnName]);
                                    break;
                                case "idsATE":
                                    myResult.idsAte = Convert.ToInt32(dtr[c.ColumnName]);
                                    break;
                                case "strConfiguration":
                                    myResult.strConfiguration = Convert.ToString(dtr[c.ColumnName]);
                                    break;
                                case "strWorkOrder":
                                    myResult.strWorkOrder = Convert.ToString(dtr[c.ColumnName]);
                                    break;
                                case "strTestStage":
                                    myResult.strTestStage = Convert.ToString(dtr[c.ColumnName]);
                                    break;
                                case "lngLapPass":
                                    myResult.lngLapPass = Convert.ToInt32(dtr[c.ColumnName]);
                                    break;
                                case "lngLapFail":
                                    myResult.lngLapFail = Convert.ToInt32(dtr[c.ColumnName]);
                                    break;
                                case "lngCycleCount":
                                    myResult.lngCycleCount = Convert.ToInt32(dtr[c.ColumnName]);
                                    break;
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bonjour,

    en fait System.DBNull peut ne pas valoir null... Tout dépend du SGBD.

    Pour comparer, je ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        if (dtr[c.ColumnName] != null
            && dtr[c.ColumnName] != System.DBNull)
        {
            switch(...)
            {
            }
        }

  3. #3
    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
    le null de c# est différent du null de données qui vient d'une base de données, qui devient alors system.dbnull.value

    donc il faut regarder si la valeur est de type system.dbnull ou si la valeur vaut system.dbnull.value (au choix)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut
    super ...merci!

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

Discussions similaires

  1. [Débutant] [toString] afficher la valeur d'un objet java
    Par xman_genius dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2006, 20h28
  2. [Débutant] Passage par valeur d'un objet Corba
    Par peaceinpal dans le forum CORBA
    Réponses: 1
    Dernier message: 29/05/2006, 20h15
  3. Réponses: 2
    Dernier message: 12/03/2006, 20h28
  4. impossible d'attribuer une valeur a un objet
    Par el_quincho dans le forum Access
    Réponses: 2
    Dernier message: 10/01/2006, 11h18
  5. [AS2] Récupérer une valeur d'un objet lorqu'on clique dessus
    Par softyClochette dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 13/10/2005, 18h40

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