J'ai le formulaire ASP.NET avec C #, où est-ce que je prends les informations de l'utilisateur pour insérer dans la base de données comme d'habitude à l'aide de LINQ. bien. Où, comme je prends la date de naissance également de l'utilisateur, mais si l'utilisateur saute pour remplir la zone de texte de la date d'interface utilisateur, alors je reçois une date de type '01 / 01/0001 'quelque chose comme ceci, ce qui ne permettrait certainement pas de le ranger.
Donc, j'ai besoin de vérifier quelque part dans mon code que c'est NULL ou dans ce format (ci-dessus). Si c'est NULL ou en format '01 / 01/0001 ', qu'est-ce que je dois faire exactement? Je n'ai pas de valeur par défaut Valeur des dates. P>
Alors, quel est le moyen standard de gérer si la date est null (mais pas obligatoire). Veuillez me guider. Tant de fois, je me suis retrouvé dans le piège tout en manipulant nul pour différents types. P>
s'il vous plaît confirmer moi est-ce bon chemin? P> P>
7 Réponses :
Vous pouvez l'utiliser en passant à la base de données.
object datetimeObj = null; if (datetimefromUI == DateTime.MinValue) // This is put in the DateTime object by default datetimeObj = DBNull.Value; else datetimeObj = datetimefromUI; // Post datetimeObj to parameter in database...
C # a des nullables, ils doivent être utilisés à la place.
Faire la date de la date Sinon, il va à défaut à nullable code> (c'est-à-dire un "
datetime? code>") devrait permettre de le laisser réellement nul si l'utilisateur ne l'a pas défini. (Et à condition que votre colonne de base de données permettrait aux nuls, il peut être stocké comme NULL dans la base de données) P>
datetime.minvalue code> C'est ce que vous voyez ici. Et vous aurez à l'essai d'explicitement pour
datetime.minvalue code> lors de l'ajout à la base de données. P>
DateTime est un type de valeur (comme un numéro), de sorte que vous ne pouvez pas assurer une valeur nulle. MANE Les gens utilisent à la fois DateTime.Minvalue ou DateTime.MaxValue, mais je préfère utiliser des types nullables:
DateTime? nullableDate; dateSample.Value = null;
Mais comme j'ai essayé d'attribuer une valeur null à la date, je reçois une exception comme suit: Type d'expression conditionnelle ne peut pas être déterminé car il n'y a pas de conversion implicite entre «System.DateTime» et '
Voir cette ligne: DateTime? dt = convert.todatetime (Dob)! = DateTime.Minvalue? Convert.todateTetime (DOB): null; Est-ce bon code ou faux?
Je pense que le problème est dans votre phrase conditionnelle. Essayez une vérification conventionnelle si elle est conditionnelle si une conversion en DateTime? est nécessaire.
Vous avez la possibilité d'utiliser Cependant, personnellement, je ne suis pas trouvé de nullables et préférerais ce second chemin: vous pouvez utiliser La base de données, s'il s'agit d'un serveur SQL et que le champ est de type SmallDateTime, déborderait et lancez une exception si vous avez essayé d'enregistrer C'est ainsi que vous pouvez analyser vos chaînes dans des types nullables: p> avec utilisation : p> nullable
datetime? code>). Cela vous permet de gérer la date comme null tout au long de votre application.
datetime.minvalue code> (qui est 01/01/0001) comme une constante significative dans votre application et La vérification de DateTime.Minvalue dans votre couche d'accès aux données. P>
datetime.minvalue code>. Null cependant, pourrait bien être stocké dans la base de données pour tout type. P>
Mais comme j'ai essayé d'attribuer une valeur null à la date, je reçois une exception comme suit: Type d'expression conditionnelle ne peut pas être déterminé car il n'y a pas de conversion implicite entre «System.DateTime» et '
Comme DateTime est un type de valeur i> il ne peut pas être nul. Par conséquent, vous ne pouvez pas la méthode convert.todatetime () code> et null dans une expression conditionnelle. Qu'est-ce que
DOB code> dans ce cas? Un string?
Oui, DOB est une chaîne. Si je ne peux pas faire d'Abouve expliquée, quelle est la normale pour la même chose? Toute référence de code
Vous pouvez faire quelque chose comme celui-ci c # avoir des fonctionnalités comme un type nullable que vous pouvez utiliser
Cela vous fera économiser un peu de code, il sera également plus robuste.
Je pense que ma question sur DateTime. Je suis conscient de nullable car tout me donne la réponse. Mais je ne suis pas sûr de savoir comment puis-je changer de format de date?
Utilisez
DateTime dt; if(DateTime.TryParse(DatetImeValue.Tostring(),dt)) // datetimevalue is your db value { datetimeproperty = dt; // in your class declare it as DateTime? datetimeproperty } else { datetimeproperty = null; }
obj.BirthDate = Convert.ToDateTime(string.IsNullOrEmpty(txtBirthDate.Text.ToString()) ? System.Data.SqlTypes.SqlDateTime.MinValue.Value : Convert.ToDateTime(txtBirthDate.Text.ToString()));
Je peux tout simplement dire datetime? dt = null;
Non Supposons que j'ai utilisé ici DateTime pas DateTime?
C'est assez ancien DateTetime juste un joker '?' est ajouté pour le rendre nullable, c'est-à-dire accepter des valeurs nulles.
Bonjour .... Je ne pouvais pas avoir de réponse ici
ok bu alors comment changer ce format de date "Jocker ''s"? Je veux ce format dans le formulaire DD-MMM-YYY. Où si j'essayais de faire comme cette datedre? dt = datevalue! = NULL? COVERT.TODATIONTÉTIME (DATEVALUE.TOSTRING ("DD-MMM-YYYY")): NULL; qui n'est pas wprking
Voir ma réponse mise à jour. Pourrait-il vous aider.