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 :

Convertir la virgule d'un double en point


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut Convertir la virgule d'un double en point
    Bonjour à tous, nouveau problème avec mon appli

    Quand je fait un insert, chaque champ est séparé avec une virgule. Mon problème, c'est que les doubles sont coupés en 2 par une virgule aussi, ce qui fait que rien ne marche, la commande sql voit 1 champ en trop qui est en fait la 2ème partie du double

    (j'ai 2 doubles dans l'exemple qui suit)

    On ma conseillé d'utiliser un Parse, mais sa ne marche pas

    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
            public classes.production creer(classes.production obj)
            {
                MySqlConnection connex = null;
                MySqlCommand cmd1;
     
                try
                {
                    double maPrime = double.Parse(obj.getPrime().ToString());
                    double maProd = double.Parse(obj.getPcProd().ToString());
                    connex = connexion.getInstance();
                    cmd1 = connex.CreateCommand();
                    cmd1.CommandText = "INSERT INTO production(annee, ID_zone, nb_colis, heure_travaille, casse, prime, pc_prod ) VALUES ("+obj.getAnnee()+", "+ obj.getIDzone() + ", " + obj.getNbColis() + " , " + obj.getHTravaille() + " , " + obj.getCasse() + ", " + maPrime + " , " + maProd + ")";
                    cmd1.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Erreur lors de la création d'une production : " + e);
                }
     
                connex.Close();
                return obj;
            }
    Quelqu'un sait comment transformer cette virgule en 1 joli et petit point ^^ ?

    Merci, bonne soirée!

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Il faut utiliser les requêtes paramétrées
    http://webman.developpez.com/article...ameter/csharp/

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Je voit pas le rapport, peux tu développer un peu s'il te plait ^^'

    Merci !

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Le rapport vient du fait que les requêtes paramétrées gèrent le format des données pour toi.
    Tu lui dit qu'il y a un paramètre dans ta requete (tes doubles par exemple) et tu lui donne la valeur de ce paramètre sans la convertir en string. Tu ne t'occupes donc plus du format, la requete paramétrée s'en charge pour toi => pas de problème de virgule, d'apostrophe, de date ou autre.
    Ca devrait donc résoudre ton problème.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut
    Citation Envoyé par Phossoyeur Voir le message
    Bonjour à tous, nouveau problème avec mon appli

    Quand je fait un insert, chaque champ est séparé avec une virgule. Mon problème, c'est que les doubles sont coupés en 2 par une virgule aussi, ce qui fait que rien ne marche, la commande sql voit 1 champ en trop qui est en fait la 2ème partie du double

    (j'ai 2 doubles dans l'exemple qui suit)

    On ma conseillé d'utiliser un Parse, mais sa ne marche pas

    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
            public classes.production creer(classes.production obj)
            {
                MySqlConnection connex = null;
                MySqlCommand cmd1;
     
                try
                {
                    double maPrime = double.Parse(obj.getPrime().ToString());
                    double maProd = double.Parse(obj.getPcProd().ToString());
                    connex = connexion.getInstance();
                    cmd1 = connex.CreateCommand();
                    cmd1.CommandText = "INSERT INTO production(annee, ID_zone, nb_colis, heure_travaille, casse, prime, pc_prod ) VALUES ("+obj.getAnnee()+", "+ obj.getIDzone() + ", " + obj.getNbColis() + " , " + obj.getHTravaille() + " , " + obj.getCasse() + ", " + maPrime + " , " + maProd + ")";
                    cmd1.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Erreur lors de la création d'une production : " + e);
                }
     
                connex.Close();
                return obj;
            }
    Quelqu'un sait comment transformer cette virgule en 1 joli et petit point ^^ ?

    Merci, bonne soirée!
    Tu peux essayer ça sinon. Mais je pense que tu as meilleur temps d'utiliser les requêtes paramétrées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     string maPrime = obj.getPrime().ToString().Replace(',','.');
     string maProd = obj.getPcProd().ToString().Replace(',','.');

  6. #6
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Citation Envoyé par momobjk Voir le message
    Tu peux essayer ça sinon. Mais je pense que tu as meilleur temps d'utiliser les requêtes paramétrées.
    Il faut en effet utiliser les requètes paramétrées et ne même pas chercher à contourner avec des solutions qui ne fonctionnent pas dans tous les cas (loin de là). En effet le ToString utilise la culture courante. Si l'utilisateur à une culture que tu n'as pas prévue et qui peut poser problème, ton application crashera lamentablement sur son PC. De plus le formatage des nombres peut être totalement paramétré dans windows, il est donc très facile de faire planter l'application si tu n'utilises pas les requètes paramétrées

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Il faut en effet utiliser les requètes paramétrées et ne même pas chercher à contourner avec des solutions qui ne fonctionnent pas dans tous les cas (loin de là). En effet le ToString utilise la culture courante. Si l'utilisateur à une culture que tu n'as pas prévue et qui peut poser problème, ton application crashera lamentablement sur son PC. De plus le formatage des nombres peut être totalement paramétré dans windows, il est donc très facile de faire planter l'application si tu n'utilises pas les requètes paramétrées
    J'ai proposé ça quand j'ai vu qu'il n'était pas trop tenté d'utiliser les requêtes paramétrées C'est vrai que ça ne sert à rien de magouiller quand il y a une solution propre.

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Oui, c’est sur

    Bon, je passait juste en coup de vent, je vais au bar !

    Je regarde sa demain, merci de votre attention.

    Vive la communauté des développeurs

  9. #9
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    La concaténation de chaînes pour faire des requêtes en base doit être interdite. Privilégier les procédures stockées ou les requêtes paramétrées ou Entity Framework.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/08/2009, 18h31
  2. mettre une virgule à la place d'un point
    Par michelle1000 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/10/2006, 07h29
  3. Comment convertir une variable string en double?
    Par quentinoux dans le forum C++
    Réponses: 12
    Dernier message: 31/07/2006, 10h46
  4. Convertir un std::string en double.
    Par vdumont dans le forum SL & STL
    Réponses: 16
    Dernier message: 10/05/2006, 16h46
  5. [VB.Net] Convertir un nombre au format double en date
    Par Immobilis dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/11/2005, 15h34

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