Comment passer une variable de type null à une Procédure Stockée SQL à partir de C#.net code
Im appel d'une procédure stockée SQL à partir d'un morceau de C#.net code:
SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters);
où la sqlParameters
variable est définie comme:
SqlParameter[] sqlParameters = new SqlParameter[SQL_NUMBER_PARAMETERS];
Log.Logger.Debug(string.Format("Running proc: {0} ", STORED_PROC_NAME));
SqlParameters[0] = new SqlParameter("fieldID", SqlDbType.BigInt );
SqlParameters[0].Value = fieldID;
SqlParameters[0].Direction = ParameterDirection.Input;
J'ai besoin de passer dans un autre deux paramètres de cette procédure Stockée, (les deux sont de type SqlDateTime
), qui vont NULL dans ce cas.
Merci,
DANS
Vous devez vous connecter pour publier un commentaire.
...puis copie pour la deuxième.
Utilisation
DBNull.Value
Mieux encore, faire de votre procédure stockée paramètres ont des valeurs par défaut de la valeur NULL. Ou utiliser unNullable<DateTime>
paramètre si le paramètre sera parfois un objet DateTime valideVous pouvez passer à la
DBNull.Value
dans le paramètre .La valeur de la propriété:Il suffit de régler pour votre deux paramètres de type Dateheure, évidemment - il suffit de montrer comment utiliser la
DBNull.Value
la valeur de la propriété ici.Marc
Je utiliser une méthode pour convertir DBNull si elle est nulle
Ainsi, lorsque le paramètre, il suffit d'appeler la fonction
Cela permettra de s'assurer que toutes les valeurs null, se changer à DBNull.Valeur, sinon il va rester la même.
public static object ToDbNull(this object value) { if (null != value) return value; return DBNull.Value; }
new SqlParameter("@NoteNo", NoteNo as object ?? System.DbNull)
Vieille question, mais voici un assez propre façon de créer un nullable paramètre:
À la demande.Le corps a une valeur, alors sa valeur est utilisée. Si c'est null, alors DbNull.La valeur est utilisée.
essayer cette! la syntaxe de moins de lignes et encore plus compact! n'oubliez pas d'ajouter les propriétés que vous souhaitez ajouter à cette approche!
Disons que le nom du paramètre est "Id" dans votre procédure stockée SQL, et le C# la fonction que vous utilisez pour appeler la base de données d'une procédure stockée est un nom du type
int?
. Étant donné que, à la suite pourrait résoudre votre problème :