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 :

formattage des données en C# pour les stocker dans une BDD MsSQL 2008


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut formattage des données en C# pour les stocker dans une BDD MsSQL 2008
    Bonsoir,

    J'ai un petit problème lorsque j'essaye d'insérer une heure et une date dans une base de données SQL Serveur 2008.

    Dans ma base de donnée, j'ai 2 champs avec les types suivant:

    - registered_date de type "date"
    - registered_hour de type "datetime"

    Du côté de mon code, j'ai le code suivant pour insérer les données:

    Code C# : 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
                        string sqlCmd = "INSERT INTO users (last_name, first_name, email, password, registered_date, registered_hour) VALUES (@LAST_NAME, @FIRST_NAME, @EMAIL, @PASSWORD, @REGISTERED_DATE, @REGISTERED_HOUR);";
     
                        using (conn)
                        {
                            SqlCommand cmd = new SqlCommand(sqlCmd, conn);
                            cmd.Parameters.AddWithValue("@LAST_NAME", txtBxLastName.Text.ToString());
                            cmd.Parameters.AddWithValue("@FIRST_NAME", txtBxFirstName.ToString());
                            cmd.Parameters.AddWithValue("@EMAIL", txtBxEmail.ToString());
                            cmd.Parameters.AddWithValue("@PASSWORD", txtBxPasswordRegister.ToString());
                            cmd.Parameters.AddWithValue("@REGISTERED_DATE", System.DateTime.Now.Date.ToShortDateString());
                            cmd.Parameters.AddWithValue("@REGISTERED_HOUR", System.DateTime.Now.TimeOfDay.ToString());
     
                            try
                            {
                                conn.Open();
                                SqlDataReader reader = cmd.ExecuteReader();
                            }
     
                            catch (Exception exc)
                            {
     
                            }
     
                        }

    Sauf que lorsque j'éxecute mon code, j'ai le message d'erreurs suivant:

    $exception {"Conversion failed when converting date and/or time from character string."} System.Exception {System.Data.SqlClient.SqlException}
    Du coût, quelle est le formattage qu'il faut donner à mes deux paramètres pour qu'ils soient pris en compte correctement?

    Merci bien et bonne soirée ; )

    L.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmd.Parameters.AddWithValue( "@REGISTERED_DATE" , System.DateTime.Now.Date.ToShortDateString() );
    cmd.Parameters.AddWithValue( "@REGISTERED_HOUR" , System.DateTime.Now.TimeOfDay.ToString() );
    Les parties bleu sont en trop. C'est le traitement interne des commandes paramétrées qui s'occupe de faire la transformation en chaine de caractères.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Parfait, merci!

    Par contre, pour l'heure je souhaiterais avoir uniquement l'heure et non la date + l'heure, ce que me fournit actuellement TimeOfDay. Est-ce qu'il y a une méthode qui me donne directement cela? Car j'ai essayé plusieurs choses, on peut facilement obtenir l'heure, les minutes, mais pas l'heure complète qu'il est au moment d'éxecution...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    A quoi bon stocker deux fois quasiment la même valeur, en SQL Server un datetime stocke la date et l'heure donc pourquoi s'encombrer ?

    Sinon quand tu parles de ne vouloir que l'heure (complète), tu parles dans la base et donc via tes requêtes ? ou dans ton programme ?

  5. #5
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Bonjour,

    A quoi bon stocker deux fois quasiment la même valeur, en SQL Server un datetime stocke la date et l'heure donc pourquoi s'encombrer ?
    parce qu'on n'est pas toujours maître du MdD... J'ai déjà travailllé sur des appli existantes où les deux champs étaient séparés...
    on avait :
    2011-04-08 00:00:00 pour la date
    et
    09:00:00 pour l'heure.
    débile, mais pas le choix à cause de l'existant.


    pour ce qui est de l'heure dans la date : tu as un objet DateTime... c'est dans le nom.
    TimeOfDay te retourne une autre type : TimeSpan
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2014, 09h44
  2. Réponses: 1
    Dernier message: 11/10/2010, 14h31
  3. Réponses: 2
    Dernier message: 19/03/2008, 14h51
  4. Réponses: 3
    Dernier message: 11/04/2007, 14h01

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