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 :

Méthode avec arguments string pouvant être = DBNull


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 23
    Points
    23
    Par défaut Méthode avec arguments string pouvant être = DBNull
    Bonjour,

    J'ai crée une méthode simple :
    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
     
                    public void Method(string filter1, string filter2)
                    {
                        if (filter1 != null)
                        {
                            //DO SOMETHING
     
                        }
     
     
                        if (filter2 != null)
                        {
                            //DO SOMETHING
     
                        }
     
                    }
    Je rencontre le problème suivant :
    Si mes arguments sont alimentés via une base de données ou un Dataset (comme dans l'exemple), une erreur apparaît si la valeur est DBNull.
    Je dois en effet caster les résultats de la base de données lors de l'appel de la méthode, et le type string est incompatible avec le type DBNull.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    public void CallMethod()
                    {
                        Method((string)DataSet.Tables["SOURCE"].Rows[0][0], (string)DataSet.Tables["SOURCE"].Rows[0][1]);
     
                    }
    Comment puis-je gérer ce type de situation ?

    D'avance merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Tu peux tester ta valeur retourne avec IsDbNull

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Merci xian21, mais sauf erreur de ma part ISDBNULL ne fonctionne qu'en VB.

    Je peux donc effectuer un test avant l'appel de ma méthode du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        if (DataSet.Tables["SOURCE"].Rows[0][0] == DBNull.Value)
                        {
                            //DO SOMETHING
                        }
    Cependant, je me demandais si il était possible de gérer ça directement au niveau de la méthode sans avoir besoin d'effectuer de test préalable.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Avec un datareader isdbnull fonctionne bien en c#

    http://msdn.microsoft.com/fr-fr/libr....isdbnull.aspx

    J'ai pas verifie par contre si tu avais la meme chose avec un dataset

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xian21 Voir le message
    J'ai pas verifie par contre si tu avais la meme chose avec un dataset
    Oui, il y a DataRow.IsNull

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Pour faire au plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Method(DataSet.Tables["SOURCE"].Rows[0][0].ToString() , ...
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Jointure avec Foreign Key pouvant être null
    Par neo932rcl dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/03/2011, 16h16
  2. Méthode avec argument initialisé par défaut
    Par rtg57 dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2010, 16h23
  3. Réponses: 3
    Dernier message: 18/06/2008, 14h01
  4. méthodes avec nombres d'arguments variable
    Par spynux dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2006, 13h51
  5. Méthode avec argument objet de la même classe
    Par Black-Ghost dans le forum C++
    Réponses: 5
    Dernier message: 30/01/2006, 10h01

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