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

Services Web Discussion :

Problème de passage d'une valeur DBNull.value à un WebService


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut Problème de passage d'une valeur DBNull.value à un WebService
    Bonjour

    J'ai développé des applications dans lesquelles je me suis fait des fonctions pour tester les valeurs de retours de mes données depuis les bdd en particulier pour isoler les valeurs dbNull.value et les remplacer par les valeurs des données correspondantes "" pour strinf, 0 pour numérique....

    Ces fonctions étant utilisées dans plusieurs applications différentes, je me suis dit que j'allais les regroupées dans un web service. Ce que j'ai fait, et ce qui marche très bien, sauf que pour leur utilités principale qui est de me retourner la valeur par défaut lorsqu'elles reçoivent dbNull.value l'appel au web service échoue.

    J'ai essaye de chercher sur le net, mais je n'ai pas trouvé grand chose de parlant, et ce que j'en ai compris au final, c'est que soit appeler un webservice avec dbNull.value ne marche ou aolors qu'il faudrait mettre une décoration au Web service pour que ça passe, vue que dbNull.value est un objet contenant null, mais je n'y suis toujours pas arrivé. Si quelqu'un avait la solution miracle...

    Voici la fonction en VB que j'utilise te je l'avais réécrite en c# pour mon web service:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Function TestDbNULLString(ByVal Data As Object)
     
            Dim CastValue As String
     
            If Data Is DBNull.Value Or Data Is Nothing Then
                CastValue = ""
            Else
                CastValue = Data
            End If
     
            Return CastValue.Trim
     
        End Function

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par feanor91 Voir le message
    vue que dbNull.value est un objet contenant null
    Attention ceci n'est pas vrai. DBNull est un singleton (une seule instance pour toute l'application), c'est donc un type à part entière. DBNull.Value renvoie l'instance de DBNull.

    Contrairement à null, qui n'est pas un type. nullindique une absence de référence au sein de la variable.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Attention ceci n'est pas vrai. DBNull est un singleton (une seule instance pour toute l'application), c'est donc un type à part entière. DBNull.Value renvoie l'instance de DBNull.

    Contrairement à null, qui n'est pas un type. nullindique une absence de référence au sein de la variable.
    Parfait, merci de préciser ce point, mais ça ne change pas le problème, comment je fait pour le passer au web service? En faite j'ai une erreur sur ls serialisation XML de cette valeur

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Quel est le message d'erreur ? Peut-on voir la partie de ton code qui pose problème ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Quel est le message d'erreur ? Peut-on voir la partie de ton code qui pose problème ?
    L'appel au web service :
    Je force le passage de Dbnull.value pour les besoins du test.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VMWebservice.testDbNULLString(DBNull.Value)
    Message d'erreur :

    Une exception de type 'System.ServiceModel.CommunicationException' s'est produite dans mscorlib.dll mais n'a pas été gérée dans le code utilisateur

    Informations supplémentaires : Une erreur s'est produite lors de la désérialisation du corps du message : 'Erreur lors de la génération du document XML.'. Pour plus d'informations, consultez InnerException.
    Le innerexception:
    {"Erreur lors de la génération du document XML."}

    {"Le type System.DBNull n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier les types qui ne sont pas connus statiquement."}
    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
     
            [WebMethod]
            public string testDbNULLString(object data)
            {
                string castValue;
     
                if (DBNull.Value.Equals(data) || data == null)
                {
                    castValue = "";
                }
                else
                {
                    castValue = data.ToString();
                }
     
                return castValue;
     
            }

Discussions similaires

  1. passage d'une valeur avec post
    Par yogui41 dans le forum Langage
    Réponses: 6
    Dernier message: 29/11/2006, 18h58
  2. Réponses: 1
    Dernier message: 17/10/2006, 16h01
  3. [SQL] Problème requête sql,rajouter une valeur,checbox
    Par snakejl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 11h18
  4. Réponses: 3
    Dernier message: 04/04/2006, 09h39
  5. [VB]Passage d'une valeur NULL à un champ de type date?
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 01/02/2006, 17h04

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