Ответ 1
SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime);
SqlParameters[1].Value = DBNull.Value;
SqlParameters[1].Direction = ParameterDirection.Input;
... затем скопируйте для второго.
Я вызываю хранимую процедуру SQL из фрагмента кода С#.net:
SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters);
где переменная sqlParameters
определяется как:
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;
Мне нужно передать еще два параметра в этот Stored Proc (оба имеют тип SqlDateTime
), которые в этом случае будут NULL.
Спасибо,
В
SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime);
SqlParameters[1].Value = DBNull.Value;
SqlParameters[1].Direction = ParameterDirection.Input;
... затем скопируйте для второго.
Используйте DBNull.Value
. Еще лучше, чтобы параметры хранимой процедуры имели значения по умолчанию NULL. Или используйте параметр Nullable<DateTime>
, если параметр иногда является допустимым объектом DateTime
Вы можете передать DBNull.Value
в параметр. Свойство Value:
SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt );
SqlParameters[0].Value = DBNull.Value;
Просто настройте для двух параметров DateTime, очевидно - просто покажите, как использовать значение свойства DBNull.Value
здесь.
Марк
Я использую метод для преобразования в DBNull, если он равен null
// Converts to DBNull, if Null
public static object ToDBNull(object value)
{
if (null != value)
return value;
return DBNull.Value;
}
Поэтому при настройке параметра просто вызывайте функцию
sqlComm.Parameters.Add(new SqlParameter("@NoteNo", LibraryHelper.ToDBNull(NoteNo)));
Это обеспечит любые нули, изменится на DBNull.Value, иначе он останется прежним.
Старый вопрос, но здесь довольно чистый способ создания параметра с возможностью сбрасывания:
new SqlParameter("@note", (object) request.Body ?? DBNull.Value);
Если request.Body имеет значение, то это значение используется. Если он равен нулю, то используется DbNull.Value.
SQLParam = cmd.Parameters.Add("@RetailerID", SqlDbType.Int, 4)
If p_RetailerID.Length = 0 Or p_RetailerID = "0" Then
SQLParam.Value = DBNull.Value
Else
SQLParam.Value = p_RetailerID
End If
попробуйте это! синтаксис меньше строк и даже более компактный! не забудьте добавить свойства, которые вы хотите добавить с помощью этого подхода!
cmd.Parameters.Add(new SqlParameter{SqlValue=(object)username??DBNull.Value,ParameterName="user" } );
Скажем, имя параметра "Id" в вашей хранимой процедуре SQL, а функция С#, которую вы используете для вызова хранимой процедуры базы данных, - это имя типа int?
. Учитывая, что следующая проблема может решить вашу проблему:
public void storedProcedureName(Nullable<int> id, string name)
{
var idParameter = id.HasValue ?
new SqlParameter("Id", id) :
new SqlParameter { ParameterName = "Id", SqlDbType = SqlDbType.Int, Value = DBNull.Value };
// to be continued...