Передача в NULL целое число? - PullRequest
1 голос
/ 08 февраля 2011

У меня есть функция, которая принимает ряд параметров ... затем выполняет вставку в БД.

у меня есть внешний ключ в одном из полей (modelID)

Я хочу передать NULL, если не выбран идентификатор модели.

я попробовал следующее:

 Dim model As Nullable(Of Integer)
        If ddlModel.SelectedValue = "Other" Then
            'add new model
            model = cSource.InsertModel(txtModel.Text, ddlManuf.SelectedValue)
        ElseIf ddlModel.SelectedValue = "0" Then
            model = Nothing
        Else
            model = ddlModel.SelectedValue
        End If

но теперь я получаю сообщение об ошибке: обнуляемый объект должен иметь значение.

как я могу это исправить? если я передаю 0, он не вставляется, потому что нарушает ограничения БД: (

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

Использовать "model = DBNull.Value"

0 голосов
/ 08 февраля 2011

сработало следующее:

 Dim model As Integer
        If ddlModel.SelectedValue = "Other" Then
            'add new model
            model = cSource.InsertModel(txtModel.Text, ddlManuf.SelectedValue)
        ElseIf ddlModel.SelectedValue = "0" Then
            model = Nothing
        Else
            model = ddlModel.SelectedValue
        End If

Затем я делаю проверку на 0 при добавлении параметра в хранимую процедуру, а если это 0, то я назначаю ему DBnull.

0 голосов
/ 08 февраля 2011

Сделайте вместо этого:

model.Value = Nothing

и дайте нам знать, если ошибка все еще происходит?

Также, когда у вас есть пустая дата, которую вы можете передать DBNull.Value дБ.

...