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 :

datetime null dans requete sql parametrée


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut datetime null dans requete sql parametrée
    Bonjour

    Comment puis-je faire pour mettre un DateTime null dans une requete sql parametrée, datetime n'acceptant pas la valeur nulle ?
    Mais Mysql accepte la valeur nulle !

    Merci de votre aide

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    J'ai truqué en utilisant 1900 comme valeur magique

    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
          if (dtpStart.Value.Year == 1900)
          {
            MyCmd.Parameters.AddWithValue("?DtStart", DBNull.Value);
          }
          else
          {
            MyCmd.Parameters.AddWithValue("?DtStart", dtpStart.Value);
          }
          if (dtpEnd.Value.Year == 1900)
          {
            MyCmd.Parameters.AddWithValue("?DtEnd", DBNull.Value);
          }
          else
          {
            MyCmd.Parameters.AddWithValue("?DtEnd", dtpEnd.Value);
          }

  3. #3
    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
    Regarde du coté de l'utilisation de ? à la déclaration de ton datetime.

    DateTime? maDate --> dans ce cas maDate peut être nulle

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    C'est pour cette raison que j'ai dans un coin une méthode comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static object GetTypeValeurQuivaBienALaBaseDeDonnées<T>(T? item) where T : struct
    {
      if (item.HasValue)
        return item.Value;
      else
        return DBNull.Value;
    }
    Ca m'épate que les nullable soient pas mieux intégrés a ADO.Net, alors que ça s'y prétait super bien...

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut Guuhl

    Tu a raison mais dans le cas present c'est plutot DateTime qui souffre d'un manque de Nullable !

    Non ?

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Bah, euh, non C'est pas spécifique aux dates, ce souci. les valeurs numériques aussi peuvent être nulles en base. C#2 a amené les nullable, qui permettent de gérer une valeur nulle pour tous les types valeurs, mais ADO.net les ignore superbement, et c'est ballot.

    Ceci dit, si tu as un DateTime?, MyCmd.Parameters.AddWithValue("?DtStart", dt); doit fonctionner, puisque casté en object, un nullable sera converti dans son type sous-jacent ou en null, selon sa valeur.

    Donc, reprenons (je m'embrouille) : au sein de ton appli, indépendamment de la base, si t'as le besoin de considérer qu'une date peut être nulle, manipule des DateTime? ; et à l'appel d'une proc stock, tu peux passer directement ce DateTime? à AddWithValue.

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Caramba !

    Je viens de capter la subtilité du ? (au début je pensais que vous évoquiez le ? dans l'assignation du parametre)

    Je viens d'apprendre qq chose : Ou puis-je trouver un peu de doc sur ce concept ??

    Merci Guuhl et ostenhard

  8. #8
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Là tout de suite je rente chez moi () donc j'ai pas le temps de développer, mais tu trouveras déjà dans la MSDN de quoi t'occuper

Discussions similaires

  1. Calcul BD mais dans Requete SQL
    Par forzaxelah dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/05/2006, 20h35
  2. [SQL] Problème d'addition dans requete SQL
    Par cheers94wow dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/05/2006, 15h05
  3. erreur dans requete Sql
    Par flOZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 02h49
  4. Passage de parametres URL dans requete SQL
    Par Fenryl dans le forum ASP
    Réponses: 4
    Dernier message: 14/12/2005, 13h37
  5. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15

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