Передача ничего в качестве значения в базу данных? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть таблица, которая содержит столбец nvarchar, который допускает пустые значения.

У меня есть метод в VB.NET, который имеет необязательную переменную описания, которая имеет значение Nothing

Public Shared Sub InsertDescription(Optional ByVal Description As String = Nothing)
{
    //Insert Description Procedure Call
}

Если я назову этот метод как:

InsertDescription();

Не удается сказать, что процедура ожидала @Description, но не была предоставлена. Единственный способ исправить это - установить значение по умолчанию «» или не делать его необязательным и просто передать «», но я не хочу вставлять строку «» в столбец описания таблиц базы данных, Я хочу передать значение по умолчанию.

Ответы [ 7 ]

4 голосов
/ 06 апреля 2011

Попробуйте использовать DbNull.Value

Если в поле базы данных отсутствуют данные, Вы можете использовать свойство DBNull.Value явно назначить объект DBNull значение в поле.

- Разве это не работает?

if (Description is nothing) then ' Set SP param to dbnull.value

Если нет, не могли бы вы опубликовать более подходящий код?

1 голос
/ 06 апреля 2011

Вы можете установить @Description на нулевое значение по умолчанию в вашей хранимой процедуре при объявлении входных параметров. Этот способ @Description будет необязательным.

ALTER PROCEDURE MyProcedure
  @Description varchar(50) = null
AS
  ...
1 голос
/ 06 апреля 2011

Либо передайте DBNull, либо в вашем сохраненном протоколе объявите параметр @Description со значением по умолчанию null

1 голос
/ 06 апреля 2011

Вам нужно установить для параметра @Description значение DBNull.Value

EDIT

IIRC Я думаю, вам нужно изменить декларацию Description на

Description As Nullable(Of String) = DbNull.Value

0 голосов
/ 06 апреля 2011
0 голосов
/ 06 апреля 2011

декларация отсутствует.

Public Shared Sub InsertDescription(Optional ByVal Description As String = Nothing)
 {
   //Insert Description Procedure Call
 }
0 голосов
/ 06 апреля 2011

Пустые значения в базе данных представлены DBNull.Value, вы хотите, чтобы оператор if устанавливал параметр на DBNull.Value, если Description = Nothing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...