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
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
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); }
Regarde du coté de l'utilisation de ? à la déclaration de ton datetime.
DateTime? maDate --> dans ce cas maDate peut être nulle
C'est pour cette raison que j'ai dans un coin une méthode comme ça :
Ca m'épate que les nullable soient pas mieux intégrés a ADO.Net, alors que ça s'y prétait super bien...
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; }
Salut Guuhl
Tu a raison mais dans le cas present c'est plutot DateTime qui souffre d'un manque de Nullable !
Non ?
Bah, euh, nonC'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.
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
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
![]()
Partager