Passer une valeur NULL dans un paramètre à un champ DateTime dans une procédure stockée
J'ai une procédure stockée qui met à jour une base de données en utilisant les paramètres que j'offre, mais je vais avoir de la difficulté à passer d'une valeur NULL à la procédure stockée
Le domaine j'ai besoin de rendre NUL est un champ DateTime
DB.Parameters.AddWithValue("@date", NULL)
Cela me donne l'erreur
'NULL' n'est pas déclaré. 'Null', constant n'est plus pris en charge; l'utilisation du Système".DBNull " au lieu
J'ai donc essayé
DB.Parameters.AddWithValue("@date", DBNull.Value.ToString())
Mais cela produit la valeur 1900-01-01 00:00:00.000
dans la colonne comme c'est le passage d'un ""
pour le domaine
J'ai aussi essayé
DB.Parameters.AddWithValue("@date", DBNull.Value)
Mais il produit cette erreur
Valeur de type 'System.DBNull' ne peut pas être converti en "String".
Quelqu'un vous avez des idées?
que outta le faire aussi. J'aimerais voir ce params sa sp attend
Utiliser le
.AddWithValue
appel avec soin - comment .NET savoir que dans ce cas ce type vos param devrait être, si vous passez dans DBNull.Value
?? Voir LukeH réponse - précis et vous vous éviterez beaucoup de chagrin! (et vraiment dur-à-trouver des bugs, trop!)OriginalL'auteur Jamie Taylor | 2011-03-03
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela, à l'aide de
Ajouter
plutôt queAddWithValue
:DBNull.Value
?? Soyez clair et précis!OriginalL'auteur LukeH
Ou vous pouvez ajouter votre paramètre comme ceci, ce qui lui donne une valeur null dans la base de données si votre variable est null:
vous avez besoin de le définir comme un type nullable comme Amit mentionné.
Plus de détails et d'arrière-plan disponibles à http://evonet.com.au/overview-of-c-nullable-types/
OriginalL'auteur Robbie Mills
Essayer cette
Si vous utilisez la classe et de ses biens et de ceux qui les valeurs de propriété sont utilisées comme paramètre, vous pouvez le faire
chnage la signature de la propriété
Aussi, si votre date de colonne est de type varchar puis corrigez-le à Jour (Sql2008) /DateTime(2005).
//changement de paramètre à cette
Permettre le champ d'accepter nulle et ensuite passer la valeur que
AddWithValue
etDBNull.Value
, l'ADO.NET d'exécution ne sais pas quel type vous voulez qu'il soit .....OriginalL'auteur
C'est un exemple. C'est un travail pour moi
OriginalL'auteur daniele3004