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

ASP.NET Discussion :

ADO.net Philosophie du ToString


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    CUCARACHA
    Invité(e)
    Par défaut ADO.net Philosophie du ToString
    Salut,

    Je suis souvent confronté à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int maPropInt = int.Parse(row["ChampDeTypeInt"].ToString());
    J'ai du mal à comprendre pourquoi nous n'avons pas droit d'écrire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int maPropInt = (int)row["ChampDeTypeInt"];
    Il doit certainement y avoir une raison et j'aimerais bien la connaitre si quelqu'un est au courant.

    D'avance merci pour votre réponse

    Laurent

  2. #2
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    C'est que le type de la colonne pour ta table n'est pas un type int.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Au risque de dire des bêtises lol, le Parse étant réservé au string (conversion de sting à int), pour convertir un Object en un int tu dois soit utiliser Convert (si t'es sûre que ton objet n'est pas nulle) soit passer par un string ...

    Quelqu'un pour confirmer ou infirmer ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    CUCARACHA
    Invité(e)
    Par défaut
    Je vois... D'un autre côté générer une exeption si on se plante de colonne ça me parait plus sûr que d'utiliser un toString qui marche quasiement à tous les coups...

    D'autres avis seraient les bienvenus

    Laurent

  5. #5
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Pour ma part, je vois deux techniques différentes: du parsing et du casting. On aurait encore pu ajouter de la conversion... :-)

    Dans le cas que tu cites, moi j'aurais utiliser un TryParse() et affecter une valeur valide par défaut dans le cas d'un parsing raté. Je préfère afficher un résultat valide même s'il ne correspond pas à ce que l'utilisateur attend plutôt qu'une application plantée avec une exception. Mais il faut voir le cas d'utilisation.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par neptune Voir le message
    Je préfère afficher un résultat valide même s'il ne correspond pas à ce que l'utilisateur attend plutôt qu'une application plantée avec une exception.
    Ce raisonnement me paraît fort dangereux...

    Quelle que soit la stratégie (int.Parse, Convert.ToInt...) il me paraît primordiale qu'une exception soit levé si les données ne sont pas du bon type.

  7. #7
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Ce raisonnement me paraît fort dangereux...

    Quelle que soit la stratégie (int.Parse, Convert.ToInt...) il me paraît primordiale qu'une exception soit levé si les données ne sont pas du bon type.
    Non, ca dépend, c'est pour cela que j'ai précisé qu'il faut voir le cas d'utilisation.

    Par exemple: j'offre à ton utilisateur la possilbité d'entrer le nom d'un champ sur lequel il trie son gridview. Je préfère laisser le gridview affiché, avec le tri précédent et afficher un message non invasif lui signifant son erreur plutôt que sortir l'artillerie de l'exception, le gros message d'erreur style fenetre modal, etc.

    OK, je caricature, mais c'est pour bien imager.

  8. #8
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Citation Envoyé par Laurent Jordi Voir le message
    Je vois... D'un autre côté générer une exeption si on se plante de colonne ça me parait plus sûr que d'utiliser un toString qui marche quasiement à tous les coups...
    Si ta colonne n'est pas un int, toString va fonctionner mais le Int.parse va lancer une exception.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  9. #9
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    +1 pour la solution made in neptune

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    CUCARACHA
    Invité(e)
    Par défaut
    L'objet de la présente discussion n'est pas tant de dire ce que l'on aurait fait mais plutôt comment on expliquerait à son client si ce qu'il a fait est une bonne pratique ou un raccourcis dangeureux.

    Quoi qu'il en soit, merci pour vos avis

    Laurent

Discussions similaires

  1. [VB.NET] [ADO.NET] Clef primaire auto incrémenté
    Par Guld dans le forum Accès aux données
    Réponses: 4
    Dernier message: 25/09/2004, 20h46
  2. [VB.NET] [ADO.NET] Adapter, TableMapping et DataSet xsd
    Par neo.51 dans le forum Accès aux données
    Réponses: 14
    Dernier message: 23/09/2004, 16h52
  3. [VB.NET] [ADO.NET] DataAdapter et concaténation
    Par master56 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/06/2004, 13h25
  4. Réponses: 5
    Dernier message: 22/12/2003, 14h18
  5. [IB v7.1][C#][ADO.NET] Démarrer avec IB 71
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 14
    Dernier message: 05/08/2003, 12h25

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