Decimal, float, double... en C# avec SQL Server [Résolu]

Signaler
Messages postés
16
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
28 juin 2011
-
Messages postés
16
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
28 juin 2011
-
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 :
        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
DataClasses1DataContext mabdd;
au préalable

Dans mon main je veux faire :
            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

3 réponses

Messages postés
16
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
28 juin 2011
1
Re, c'est bon, en fait le souci venait du fait que je devais refaire mon LinQ (même si j'ai actualisé la bdd).

Je poste quand même la solution trouvée :

Ma méthode InsertReception avec au préalable
float tonnage

        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();
        }



Et ensuite mon appel de méthode dans mon main :
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à, bonne journée à tous !
Messages postés
326
Date d'inscription
vendredi 23 décembre 2005
Statut
Membre
Dernière intervention
8 février 2011
16
Ton problème vient surement du fait que 1.2 est un double. Pour forcer le type
float : 1.2f ou (float)1.2
double : 1.2d ou (double)1.2
decimal : 1.2m ou (decimal)1.2

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Messages postés
16
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
28 juin 2011
1
Bonjour, merci pour ta réponse, j'ai essayé, mais j'ai encore une erreur :
"Impossible de convertir implicitement le type 'float'en 'int?'. Une conversion explicite existe (un cast est-il manquant ?)"

Cela se passe quand je met mon attribut en float, dans ma méthode puis lorsque j'appelle ma méthode dans le main.
Quand je change float en int (même en gardant (int)1.2) ça fonctionne mais je n'ai pas de chiffre à virgule dans ma bdd