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 :

[c# 3.5] Convertion en Int


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut [c# 3.5] Convertion en Int
    salut,

    je suis confronté à des interrogations dans mon projet c# concernant la convertion en int, je ne sais pas vraiment quel méthode utilisé et comment.

    je m'explique:

    je crée des requète, du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string chSqlCount = "select count(*) from table1, table2 where ..."
    je crée ensuite ma commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IDbCommand cmd = maConnection.CreateCommand();
    cmd.CommandText = chSqlCount;
    et, en attendant de trouver mieux, je récupère le résultat comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nbRow;
    try { nbRow = Convert.ToInt32(cmd.ExecuteScalar()); } catch { nbRow = 0; }
    sachant :
    _que la chaîne de la requète est créer dans une autre classe, et que je ne pourrais jamais être sur à 100% quel soit d'une syntaxe correct

    _que les performances de l'application sont primordiales et que j'ai l'impression que mon code est plutôt lent (mais peut ètre est-ce du à mes requètes plus qu'au try/catch)

    Que me conseilleriez vous pour améliorer tout ça? (si c'est possible) les try/catch sont t'ils indispensable?

    merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut
    Il me semble que si tu passes par un datareader (donc comme si ta requête renvoyait plusieurs lignes qu'il faut lire séquentiellement), tu peux appeler une méthode du genre ReadAsInt (sur le datareader) ou quelque chose comme ca, qui s'occupe de la conversion à ta place.

    Conceptuellement, c'est plus propre : c'est dans la couche DB que tu vas faire la conversion, puisque c'est la que tu lis le résultat. C'est peut être aussi plus performant (même si ce n'est pas évident).

    Par contre tu ne peux pas t'affranchir du try / catch.

    J'espère que ça pourra t'aider.

    Bonne journée

  3. #3
    Expert confirmé 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
    Par défaut
    mon code est plutôt lent : mais peut ètre est-ce du à mes requètes plus qu'au try/catch)
    l'exécution du catch est effectivement lente.
    Pour une conversion de string en int, utiliser : i:=int.TryParse(MyString);

  4. #4
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    merci pour vos réponses,

    Graffito, malheureusement ce n'est pas toujours (voir quasiment jamais) du string que je doit parser je crois qu'il n'y a pas d'équivalent à TryParse pour les autres types, à moins de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int.TryParse(monObjet.ToString());
    mais la je me demande si je gagne beaucoup en performance de plus je ne sais pas si le toString lève parfois des exceptions sur certains types particuliers...

    je vais tester la méthode d'ArianeV pour le moment et voir si les perfs sont meilleures.

  5. #5
    Expert confirmé 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
    Par défaut
    je me demande si je gagne beaucoup en performance
    Tu gagneras beaucoup, si tu passe souvent dans le catch (j'en ai fait l'expérience).

Discussions similaires

  1. [ZF 1.11] Notice: Object of class My_Acl could not be converted to int
    Par ben.p dans le forum Zend_Acl & Zend_Auth
    Réponses: 4
    Dernier message: 15/07/2011, 00h00
  2. [1.x] Object of class Invitation could not be converted to int in
    Par mantex dans le forum Symfony
    Réponses: 8
    Dernier message: 05/12/2010, 14h11
  3. [PEAR][MDB2] Notice: Object of class MDB2_Error could not be converted to int
    Par julio69 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/04/2010, 00h20
  4. convertion chaine int / int chaine
    Par skapin dans le forum Débuter
    Réponses: 10
    Dernier message: 04/10/2007, 23h15
  5. [Converter] Date, int, etc
    Par phoebe dans le forum Struts 1
    Réponses: 13
    Dernier message: 09/08/2007, 16h31

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