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 le type Decimal en Numeric vers postgresql


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut convertir le type Decimal en Numeric vers postgresql
    Bonsoir,
    je cherche à convertir un prix de type Decimal (avec une jolie virgule) en Numéric (avec un méchant point) pour l'envoyer ensuite vers une BD postgresql.

    En cherchant (longtemps) j'ai trouvé ça (la partie en rouge) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void add(int id_tva, int id_cat, string libelle_produit, Decimal prix_ht_produit) 
            {
                string sql;
                 
    NpgsqlCmd.Parameters.Add( new NpgsqlParameter ("convert", NpgsqlTypes.NpgsqlDbType.Numeric ));
    NpgsqlCmd.Parameters["convert"].Value =prix_ht_produit ;
                
                adapter = new NpgsqlDataAdapter();
    
                sql = "insert into produit (id_tva,id_cat,libelle_produit,prix_ht_produit) values('" + id_tva + "','" + id_cat + "','" + libelle_produit + "','" + NpgsqlCmd.Parameters["convert"].Value + "')"; 
                adapter.InsertCommand = new NpgsqlCommand(sql, sqlCnn);
                adapter.InsertCommand.ExecuteNonQuery();
            }
    Seulement la conversion ne fonctionne pas et j'ai toujours une virgule à la place d'un point et donc un message d'erreur.

    Je vous remercie d'avance.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    un numeric ou un decimal en tant que nombre, n'a ni point, ni virgule, il a un emplacement de séparateur de décimal

    une représentation d'un nombre en string a par contre une virgule ou un point selon la culture
    il convient donc de passer le nombre à la base de données sous forme de nombre plutot que sous forme de string pour éviter les problèmes de culture différente

    pour ca il y a en effet les DbParameters, mais tu ne les utilises pas comme il faut
    il faut ajouter un paramètre (nom et valeur (éventuellement type))
    puis dans la requete utiliser ce parameter par son nom
    commandtext = "insert into table (ch1) values (@nomDuParam)"

    l'objet de connexion aux données se chargera de faire transiter le paramètre et sa valeur comme une variable, utilisée dans la requete
    toi tu n'as fait que concaténer la valeur du paramètre, donc comme si tu n'en avais pas utilisé
    en plus vu que tu fais un new command, celui où tu as ajouté les parameters n'est pas utilisé, tu as une autre grosses erreur ici
    j'ajouterais que je ne vois pas l'utilité d'un adapter ici (et ailleurs non plus d'ailleurs ), ca n'est pas utile pour faire exécuter une requete que tu connais

    c'est encore plus pratique pour les dates, et aussi pour les string avec des apostrophes par exemple (sans parler de la faille injection sql)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut
    Merci pour ta réponse.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2009, 20h20
  2. Type de données decimal et numeric
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 21/08/2008, 15h13
  3. Réponses: 8
    Dernier message: 20/06/2008, 14h47
  4. Convertir base HyperFile vers PostgreSQL
    Par bradern dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 17/11/2006, 14h25
  5. type DECIMAL et NUMERIC
    Par KRis dans le forum Débuter
    Réponses: 1
    Dernier message: 11/03/2006, 18h52

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