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 :

Decimal, float, double en C# avec SQL Server


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Par défaut Decimal, float, double en C# avec SQL Server
    Bonsoir tout le monde,
    Je suis débutante en c# et je suis confrontée à un problème que j'ai déjà rencontré, mais... en JAVA ! Et je suis perdue dans mon cas présent.

    Voilà, je dois insérer quasiment "à la main" toutes les valeurs d'une tables, les enregistrements...

    En bref, j'ai une table "réception", qui contient :
    - un id_reception
    - un id_employe
    - un id_societe
    - un tonnage
    - un taux_sucre
    - un pH
    - une date_reception

    J'ai crée ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            public void InsertReception(int id_employe, int id_societe, int id_livreur, decimal tonnage, int taux_sucre, int pH, DateTime date_reception)
            {
                reception nouvreception = new reception { id_emp = id_employe, id_societe = id_societe, id_livreur = id_livreur, tonnage = tonnage, taux_sucre = taux_sucre, ph = pH, date_reception = date_reception };
                mabdd.reception.InsertOnSubmit(nouvreception);
                mabdd.SubmitChanges();
            }
    Avec au préalable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataClasses1DataContext mabdd;
    Dans mon main je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                Rq_sql obj = new Rq_sql();
                obj.InsertReception(1, 2, 2, 1.2, 85, 4, DateTime.Now);
    Et donc mon souci c'est ce fameux "1.2", bien sûr j'ai déjà essayé avec des virgules, entre côtes, entre double côte, enfin bref la totale.
    En Java j'avais fait une requête paramétrée, mais ici je ne fais pas de requête sql donc je ne sais pas comment faire !

    Au départ j'étais en type "int", puis en "float" et enfin ici en "decimal". Mais je ne trouve rien, une idée ??

    Merci d'avance pour vos réponses,
    Annabelle

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Float: 1.2f
    Double: 1.2d
    Decimal: 1.2m

    NB: on dit "quotes", la côte c'est quand ca monte

  3. #3
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Par défaut les constantes flottantes sont considérés comme des doubles en .Net. Comme l'a indiqué PitMaverick78, il faut suffixer par F ou M (minuscule ou majuscule peu importe) pour forcer un float ou un decimal.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Par défaut
    Tout d'abord, merci pour vos réponses

    j'ai bien essayé en mettant mon attribut dans ma classe en float, ainsi que dans ma méthode puis quand je fais appel à ma méthode dans le main en mettant (float)1.2 (en ayant également changé dans la bdd)

    Mais ça me génère une erreur, j'obtiens "Impossible de convertir implicitement le type 'float'en 'int?'. Une conversion explicite existe (un cast est-il manquant ?)"

    Quand je met int partout à la place de float, l'insertion fonctionne mais je n'ai pas de chiffre à virgule...
    Je désespére

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 47
    Par défaut
    Re, c'est bon problème résolu, je devais juste recréer mon LinQ
    Je pose quand même la solution, on sait jamais ça peut toujours servir :

    Ma méthode InsertReception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            public void InsertReception(int id_employe, int id_societe, int id_livreur, float tonnage, int taux_sucre, int pH, DateTime date_reception)
            {
                reception nouvreception = new reception { id_emp = id_employe, id_societe = id_societe, id_livreur = id_livreur, tonnage = tonnage, taux_sucre = taux_sucre, ph = pH, date_reception = date_reception };
                mabdd.reception.InsertOnSubmit(nouvreception);
                mabdd.SubmitChanges();
            }
    Avec au préalable mon attribut Dans mon main, j'ai :
    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
    23
    24
    25
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Linq.Mapping;
     
    namespace Test_ecriture_bdd
    {
        class Program
        {
            static void Main(string[] args)
            {
     
                //for (int i = 1; i <= 100; i++)
     
                Rq_sql obj = new Rq_sql();
                obj.InsertReception(1, 2, 2, (float)1.5, 85, 4, DateTime.Now);
                /*obj.InsertReception(1, 3, 3, 1, 90, 4, DateTime.Now);
                obj.InsertReception(1, 4, 4, 1, 95, 4, DateTime.Now);
                obj.InsertReception(1, 5, 5, 1, 97, 4, DateTime.Now);*/
     
            }
        }
    }

    Voilà, merci beaucoup pour tout

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

Discussions similaires

  1. envoi de mail avec sql server
    Par the_new dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 18h56
  2. fonction left avec sql server 6.5
    Par shake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2004, 08h48
  3. Gérer les queue avec sql server ?
    Par devdev dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/06/2004, 17h38
  4. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  5. Déployer une appli avec SQL SERVER
    Par tiboleo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/10/2003, 14h29

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