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

ASP.NET Discussion :

Datetime + Mysql problème sur insertion


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut Datetime + Mysql problème sur insertion
    Bonjour !

    Hum je pense rencontrer un souci maintes fois rencontrés sur le forum mais je n'ai malheureusement pas trouver matière pour le résoudre (forum + google ...)

    J'utilise Mysql comme base de donnée, j'essaye de faire un malheureux Insert et ça ne fonctionne pas !

    voici mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int retour = 0;
            MySqlConnection connection = new MySqlConnection(cnx);
            string requete = "update conges set (date_modif=@date_modif) where id=@id;";
            MySqlCommand command = new MySqlCommand(requete, connection);
            command.Parameters.Add("@date_modif", MySqlDbType.DateTime).Value = conges.DateModif;
            command.Parameters.Add("@id", MySqlDbType.Int16).Value = conges.Id;
            try
            {
                connection.Open();
                retour = command.ExecuteNonQuery();
                connection.Close();
            }
            catch (Exception e) { throw e; }
            return retour;
    Voici ce que me dit e :
    - e {"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(date_modif='0001-01-01 00:00:00') where id=1' at line 1"} System.Exception {MySql.Data.MySqlClient.MySqlException}
    Je penche pour un problème de format date mais après plusieurs tentatives de formatage de la date je m'en remet à vous
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Que vaut conges.DateModif?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    il est égale à DateTime.MinValue;

    Ne pouvant pas forcer une valeur NULL dans la colonne "date_modif" je vais me baser sur DateTime.MinValue pour pouvoir tester si la valeur a déjà été modifiée ou pas
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Datetime.MinValue = 01/01/0001 00:00:00 et sur Mysql L'intervalle de validité va de ‘1000-01-01 00:00:00’ à ‘9999-12-31 23:59:59’ d'où probablement ton problème

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par karlus Voir le message
    Datetime.MinValue = 01/01/0001 00:00:00 et sur Mysql L'intervalle de validité va de ‘1000-01-01 00:00:00’ à ‘9999-12-31 23:59:59’ d'où probablement ton problème
    Ha oui ça pourrait poser problème !

    Alors autre question, comment faites vous pour résoudre ce genre de souci !

    En somme ma colonne peut être NULL or je n'arrive pas à forcer la valeur NULL à mon paramètre donc en seconde solution je pensais utiliser une valeur "clé telle que datetime.minvalue.
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Tu n'arrives pas à la mettre à NULL car ta colonne n'accepte pas la valeur Null ? As tu essayé avec System.DBNull ?

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Alors après vérification ma colonne accepte les valeurs 'NULL' !

    J'ai tenté ton test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if (conges.DateModif == DateTime.MinValue)
            {
                command.Parameters.Add("@date_modif", MySqlDbType.Date).Value = System.DBNull.Value;
            }
            else
            {
                command.Parameters.Add("@date_modif", MySqlDbType.Date).Value = conges.DateModif.ToString("dd-MM-yyyy");
            }
    Et voici l'erreur que je récupère :

    {"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(date_modif=NULL) where id=1' at line 1"}
    Je ne comprend pas vraiment ce qui lui pose problème parce qu'en faisant le test via 'Mysql Query Browser' ce genre de requête :
    update conges set date_modif = NULL where id = 1
    fonctionne très bien
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Pourquoi fais tu un ToString("dd-MM-yyyy") si ta colonne est de type date

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par karlus Voir le message
    Pourquoi fais tu un ToString("dd-MM-yyyy") si ta colonne est de type date
    Ha c'etait un test, j'ai laissé le code entier mais pour l'instant je me concentre sur la partie du test
    (conges.DateModif == DateTime.MinValue)
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    J'ai fait évoluer légèrement mon code pour avancer !

    J'ai décidé d'utiliser le 1er janvier 1900 comme date de test :

    Malheureusement je n'arrive toujours pas à modifier la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                command.Parameters.Add("@date_modif", MySqlDbType.DateTime).Value = tools.Date_MinValue();
     
    et voici tools.Date_MinValue()
     
    public static DateTime Date_MinValue()
        {
            return new DateTime(1900, 1, 1, 0, 0, 0);
        }
    Voici l'erreur que je rencontre :
    {"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(date_modif='1900-01-01 00:00:00') where id=2' at line 1"}
    Alors bien sur j'ai testé avec plusieurs formatage possible ainsi que sans formatage et je rencontre toujours la même erreur
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Utilises plutôt un type nullable dans la classe congés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime? DateModif { get; set; }
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (conges.DateModif== null)
    {
    ....

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Et bien le problème ne venait pas du format date ...

    L'erreur viens des parenthèses dans ma requête ...

    On ne fait pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set (champs1=@champs1)
    mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set champs1=@champs1
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 109
    Points : 120
    Points
    120
    Par défaut
    Ca n'empêche pas qu'utiliser une valeur Null et un type Nullable semble être une meilleure solution

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

Discussions similaires

  1. Problème sur INSERT et UPDATE en même temps
    Par harf18 dans le forum Développement
    Réponses: 2
    Dernier message: 09/12/2009, 15h50
  2. [WD14] Problème sur Insert
    Par Raptor92 dans le forum WinDev
    Réponses: 2
    Dernier message: 28/11/2009, 22h36
  3. Problème sur Insert
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/05/2008, 10h39
  4. [VB6/mysql]:Problème d'insertion dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/06/2006, 10h15
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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