J'ai la requête suivante:
SqlParameter moFrom1Param = new SqlParameter("@MoFrom1", dTOForwarding.MoFrom1 == null ?
(Object)DBNull.Value : dTOForwarding.MoFrom1);
moFrom1Param.IsNullable = true;
moFrom1Param.Direction = ParameterDirection.Input;
moFrom1Param.SqlDbType = SqlDbType.DateTime;
cmd.Parameters.Add(moFrom1Param);
5 Réponses :
Avez-vous essayé dbnull.value ? En outre, votre code indique "@ mofrom1" mais l'erreur est d'environ @ thefrom1 p> p>
Guillaume, je viens d'essayer ça. Cela ne compile pas. "Opérateur '??' ne peut pas être appliqué aux opérandes de type SQLPARAMETER et DBNULL ".
Guillaume, je passe tous les paramètres. Je viens d'avoir montré comment j'ajouter 1 paramètre. Je fais la même chose pour tout le reste. 47 Au total, 42 sont DateTime.
Modifier mes réponses pour supprimer le ?? opérateur et faire la logique sur la valeur correcte.
Cette solution a fonctionné pour moi, avec une date d'heure nullable. Les autres solutions n'ont pas fonctionné.
SqlParameter moFrom1Param = new SqlParameter("@MoFrom1", dTOForwarding.MoFrom1 == null ? DBNull.Value : dTOForwarding.MoFrom1);
moFrom1Param.IsNullable = true;
moFrom1Param.Direction = ParameterDirection.Input;
moFrom1Param.SqlDbType = SqlDbType.DateTime;
cmd.Parameters.Add(moFrom1Param);
Lorsque je trie cela, je reçois l'erreur suivante: "Le type d'expression conditionnelle ne peut pas être déterminé car il n'ya pas de conversion implicite entre" system.dbnull "et" system.data.sqlclient.sqlparameter "
Merci! Cela m'a aidé à obtenir la bonne réponse :) Il suffit d'ajouter une montaise à dbnull.value afin de le faire fonctionner.
Surpris, il avait besoin d'un casting mais content que tu l'as eu trié quand même :)
Merci Jeremy. J'avais besoin de (objet) dbnull.value code>
On dirait que vous n'abandonnez pas la valeur null, quelque chose comme ceci:
var thFrom1Param = new SqlParameter("@ThFrom1", SqlDbType.SqlDateTime);
thFrom1Param.Value = DBNull.Value;
thFrom1Param.Direction = ParameterDirection.Input;
Modification de la procédure stockée fonctionne, mais je pense que c'est un peu bâclé.
Vous pouvez le gérer en code, ce travail pour moi: P>
DateTime? myDate;
if (TextBoxWithDate.Text != "")
{
myDate = DateTime.Parse(TextBoxWithDate.Text);
}
else
{
myDate = null;
}
Utilisez le opérateur coalescent null ?? Code> en conjonction avec dbnull.value code>:
Avez-vous envisagé de normaliser vos données afin que vous ne comprenez que des paires à deux, et vous pouvez faire face à plus de 3?