Как я могу передать нулевое значение для даты в vb.net хранимой процедуре SQL? - PullRequest
6 голосов
/ 16 марта 2009

Мое приложение asp.net с vb.

На моей странице есть текстовое поле для проходящей даты. Если я не ввел дату и при нажатии кнопки отправить, я должен передать нулевое значение хранимой процедуре.

Я пробовал следующие коды, такие как DBNull.Value и DateTime.MinValue. В этом случае вместо нуля, "#12:00:00#" проходит. Я должен передать Null.

Ответы [ 2 ]

15 голосов
/ 16 марта 2009

Просто присвойте параметру значение DBNull.Value

[EDIT]

Если вы используете SqlParameter (спасибо Джону), вы можете установить его следующим образом, если он выдаст ошибку

parameter.Value = DBNull.Value 
0 голосов
/ 01 апреля 2011
Dim pflt_dateto As SqlParameter = cmd.CreateParameter
        pflt_dateto.Direction = ParameterDirection.Input
        pflt_dateto.DbType = SqlDbType.Int
        pflt_dateto.IsNullable = True
        pflt_dateto.ParameterName = "flt_dateto"

        If String.IsNullOrEmpty(dateto) Then
            pflt_dateto.SqlValue = DBNull
        Else
            pflt_dateto.SqlValue = dateto
        End If

        cmd.Parameters.Add(pflt_dateto)

Поскольку вы установили параметр nullable, ошибка исчезнет. Теперь проблема в том, что .NET передает нулевое целое число как 0, поэтому нам нужно с этим справиться.

Chao

...