Comment pourrions-nous gérer null pour un champ datetime (obtenu à partir de SQL Server) dans notre programme en C#?Comment gérer null pour un champ de date-heure (DB) allow-null dans notre programme?
6
A
Répondre
12
Il existe 3 approches courantes ici;
- si vous parlez
object
(peut-être que vous allez chercher à partir d'un lecteur de données), puisDBNull.Value
peut représenter nulle. Je n'ai pas tendance à laisser ceci hors de la couche de données, bien que - dû à l'histoire de .NET 1.1,
DateTime.MinValue
soit communément interprété commenull
; un nombre magique, peut-être - mais il fonctionne et est supporté par la plupart des liaisons de données, etc. - dans .NET 2.0,
Nullable<T>
signifie que vous pouvez utiliserDateTime?
- c'est-à-dire un nullable-of-DateTime; Il suffit d'utiliserDateTime?
où vous voulez dire unDateTime
qui peut être nul, et vous pouvez lui donner une valeur denull
ouDateTime
valide.
D'autres réflexions sur l'accès des données et nulls:
- lors du passage à un
SqlCommand
vous doit utilisationDBNull.Value
, nonnull
- voir ci-dessous - lors de la lecture d'un lecteur de données, J'ai tendance à vérifier
reader.IsDbNull(ordinal)
choses de commande (avec Nullable<T>
comme exemple):
param.Value = when.HasValue ? (object)when.Value : DBNull.Value;
3
Utilisez DateTime?
Quel problème vous rencontrez, en particulier?
- Modifier
Pour que ce soit clair, c'est un objet DateTime Nullable
, pas une question :)
DateTime? t = null;
- Edit
En réponse aux commentaires, vérifiez comme ceci:
DateTime? theTime;
if(table["TheColumn"] == DBNull.Value){
theTime = null;
} else {
theTime = (DateTime) table["TheColumn"];
}
Questions connexes
- 1. dateheure fonction dans php
- 2. DateHeure, DateHeure? et LINQ
- 3. Comment gérer plusieurs instances d'entrée dans un champ
- 4. Champ DB incrémenté
- 5. Stockez Django form.cleaned_data dans un champ de modèle null?
- 6. Comment gérer null pour des valeurs numériques lors de l'utilisation de BeanUtils.copyProperties?
- 7. Arrondi des objets DateHeure
- 8. Comment prévenir, contrer ou compenser, un champ vide/NULL (MySQL) retournant un ensemble vide
- 9. Comment faire un champ NULL en utilisant MySQL GUI Tools?
- 10. Comment gérer les valeurs NULL dans mes objets métier
- 11. Sélectionnez un champ différent dans mysql si un champ est défini sur null?
- 12. Comment gérer Null dans la sous-requête LINQ?
- 13. définir la colonne int dans DB à null
- 14. Comment définir la valeur null par défaut dans un champ de date dans sql server 2000?
- 15. L'un de mes champs DB n'est-il PAS NULL?
- 16. Bug dans notre SQL ou Entity Framework?
- 17. Utilisation des déclencheurs pour gérer les champs calculés dans TeamSystem DB
- 18. Comment gérer les valeurs NULL dans les colonnes de type boolean dans MS Access?
- 19. Exécution d'un fichier de commandes pour mettre à jour un champ avec un caractère étrange dans SQL Server DB
- 20. Conseils pour gérer un grand nombre de fichiers?
- 21. Comment ajouter un champ par programme à un TAdoTable dans Delphi
- 22. Pouvons-nous lier notre TextBox à un OnTextChangedEvent pour MVVM?
- 23. XmlDocument.SelectSingleNode renvoie null pour le nœud racine
- 24. comment utiliser la bibliothèque de médias dans notre application?
- 25. Comment gérer les objets NULL dans XML provenant de SQL Server?
- 26. insérer un tuple dans un db mysql
- 27. Meilleure façon de partager/gérer notre bibliothèque interne de pythons entre les applications
- 28. Structure pour gérer l'accès des utilisateurs sur un site
- 29. sérialisation d'un objet et le stockage à un champ varbinary dans un DB
- 30. AJAX Fonction pour remplir un champ dans un formulaire?
Mark, Merci beaucoup. – odiseh