wartość null dla Parameters.Add i ExecuteNonQuery

0

Cześć

chciałbym dodać do SQL connection parametr, który może (ale nie musi) mieć wartość null.

Pierwsze podejście powoduje błąd w trakcie wykonania:

cmd.Parameters.Add("@paramD", SqlDbType.Int).Value = wartosc;

The parameterized query '(@paramA smallint,@paramB tinyint,@paramC int,@paramD varchar(4),@paramD int,@p' expects the parameter '@paramD', which was not supplied.

Drugie podejście powoduje, że kod się nie kompiluje:

cmd.Parameters.Add("@paramD", SqlDbType.Int).Value = (wartosc == null) ? DBNull.Value : wartosc

Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DBNull' and 'int?'

W jaki sposób mogę warunkowo dodać wartość Int lub null?

Pozdrawiam!

0

A tak probowałeś:

cmd.Parameters.Add("@paramD", SqlDbType.Int);
cmd.Parameters["@paramD"].Value = wartosc == null ? (object)DBNull.Value : wartosc;

albo krócej:

cmd.Parameters["@paramD"].Value = wartosc ?? (object)DBNull.Value;

1 użytkowników online, w tym zalogowanych: 0, gości: 1