powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как правильно передавать NULL
5 сообщений из 5, страница 1 из 1
Как правильно передавать NULL
    #38043102
maxterbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть такой код:

Код: c#
1.
sql_command.Parameters.AddWithValue("@ProductName", product.Name);



проблема возникает, когда product.Name = null

я пытался сделать так:

Код: c#
1.
 sql_command.Parameters.AddWithValue("@ProductName", product.Name ?? DBNull.Value);



но оператор ?? со стрингом не работает, да и строка может быть не только нулевая но и пустая, так что такой вариант не подходит.


я уже думаю писать класс-обертку, который будет анализировать строку на NullOrEmpty и передавать соответствующее значение, но может есть какой-то более простой способ?
...
Рейтинг: 0 / 0
Как правильно передавать NULL
    #38043181
__John__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вообще в случае Null не вызывать sql_command.Parameters.AddWithValue("@ProductName", product.Name);
может тогда по умолчанию параметр будет Null
...
Рейтинг: 0 / 0
Как правильно передавать NULL
    #38043185
__John__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или в случае когда параметр Null использовать метод Parameters.Add
...
Рейтинг: 0 / 0
Как правильно передавать NULL
    #38043211
maxterbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пока хелпер сделал:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 private object ReturnFieldOrDbNull(string field)
        {
            if (String.IsNullOrEmpty(field))
            {
                return DBNull.Value;
            }
            return field;
        }




Код: c#
1.
может тогда по умолчанию параметр будет Null



тогда валится эксцепшн.
...
Рейтинг: 0 / 0
Как правильно передавать NULL
    #38043340
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxterbearно оператор ?? со стрингом не работает, да и строка может быть не только нулевая но и пустая, так что такой вариант не подходит.
Оператор ?? работает c классом string. С чем он не работает так это с несовместимыми типами. То есть типы по обоим сторонам ?? должны быть совместимы. Типы string и DBNull таковыми не являются - отсюда и ошибка компиляции.

maxterbearЯ пока хелпер сделал
Я бы extension метод написал. Примерно так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private static void AddWithValueOrDBNull(this SqlParameterCollection sqlParameters, string parameterName, object value)
{
	sqlParameters.AddWithValue(parameterName, value ?? DBNull.Value);
}

private static void AddWithValueOrDBNull(this SqlParameterCollection sqlParameters, string parameterName, string value)
{
	if (String.IsNullOrEmpty(value))
		sqlParameters.AddWithValue(parameterName, DBNull.Value);
	else
		sqlParameters.AddWithValue(parameterName, value);
}
...
sql_command.Parameters.AddWithValueOrDBNull("@ProductName", product.Name);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как правильно передавать NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]