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 :

Difference sur l'insertion d'un float entre DataAdapter et SqlCommand


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Par défaut Difference sur l'insertion d'un float entre DataAdapter et SqlCommand
    Bonsoir,

    J'ai un soft qui utilise le DataAdapter et des DataTable pour tout ce qui est communication à une base SqlServer 2005.
    Et j'ai un truc que je comprends pas, quand je fais un INSERT (pas encore testé le UPDATE) d'un float (exemple: 1618.43), j'ai une imprécision de 0.00005 (1618.43005371094) , je la trouve assez importante et vous?.

    Je modifie mon soft pour faire un essai avec SqlCommand et SqlParameter je fais un INSERT de la même valeur et là la valeur est bonne.

    Vous avez une idée?

    Je précise que la DataColumn de la table est bien de type float. J'ai aussi utilisé SqlProfiler pour vérifier, et j'insère bien la bonne valeur sans l'imprécision.


    Code avec la Table
    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
     
     
    using( SqlConnection connection = new SqlConnection( stringConnection.ConnectionString ) )
    {
                    SqlDataAdapter adapter = new SqlDataAdapter( query, connection );
                    SqlCommandBuilder cmd = new SqlCommandBuilder( adapter );
                    DataTable table = new DataTable();                
                    adapter.Fill(  table );
     
                    DataRow row = table.NewRow();
                    row["time"] = DateTime.Now;
                    row["value"] = 1618.43;
                    table.Rows.Add(row);
     
                    adapter.Update( table );
    }
    Code avec SqlConnection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    using( System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection( stringbuilder.ToString() ) )
                {
                    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand( "insert into Table (time, value) VALUES (@p1, @p2)", connection );
                    cmd.Parameters.Add( "@p1", System.Data.SqlDbType.DateTime ).Value = DateTime.Now;
                    cmd.Parameters.Add( "@p2", System.Data.SqlDbType.Float ).Value = 1618.43;
     
                    connection.Open();
                    cmd.ExecuteNonQuery();
                    connection.Close();
                }
    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Essais avec 1618.43f car sans la "f" de la fin, ton nombre est un double et non un float.
    Dans un cas de float value = 1618.43; le compilateur t'aurais signaler une erreur.
    Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Par défaut
    Merci mais ça change pas grand chose ça me fait tjs la même chose.

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Par défaut
    Quelqu'un pourrait me dire quand il ajoute un float dans ça base avec une SqlDataAdapter+DataTable si il a le même probleme ?

    merci

Discussions similaires

  1. Différence sur un FLOAT entre un "=" et un LIKE
    Par BrYs dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/07/2005, 12h04
  2. problème sur requete insert
    Par shadowmoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/06/2005, 11h46
  3. Evenement sur UPDATE, INSERT, DELETE
    Par papouAlain dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/12/2004, 14h58
  4. [LISTENER] sur l'insertion de cd
    Par divxdede dans le forum Multimédia
    Réponses: 2
    Dernier message: 03/07/2004, 11h28
  5. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32

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