om3n Ответов: 3

Ошибка: объект, допускающий значение null должно иметь значение


Я хочу ввести данные NULL (а не числовые числа и т. д.) В поле типа integer. Я использую следующий код:

Dim Col2 As Nullable(Of Integer) = Nothing
OpenDatabase()
Command.Connection = Con
Command.CommandType = CommandType.Text
Command.CommandText = "INSERT INTO SIGN(TYPESIGN_ID) VALUES('" + CStr(Col2) + "')"
Command.ExecuteNonQuery()
Con.Close()


в результате получается "Nullable object must have a value". где моя ошибка?
Примечание : Я с помощью VB .Чистый 2010 &ампер; для SQL Server 2005 с

3 Ответов

Рейтинг:
28

Aarti Meswania

не пишите 'ничего- в первой строке
или
вы можете написать запрос вставки, как показано ниже,

"INSERT INTO SIGN(TYPESIGN_ID) VALUES(" + "null" + ")"

Счастливого Кодирования!
:)


om3n

спасибо всем,
Я пытался :

Dim Col2 As Nullable(Of Integer)
OpenDatabase()
Команда.Подключение = Кон
Команда.Свойство Commandtype = Значение Commandtype.Текст
Команда.Свойства commandtext = "вставить в знак(TYPESIGN_ID) значения('" + столбец col2 + "')"
Команда.Метод executenonquery()
Кон. Близко()
Все еще не могу, я получаю ошибку "преобразование из строки"')" В тип "Double" недопустимо."

при использовании :
"Вставить в знак(TYPESIGN_ID) значения(" + "null" + ")"
результат-успешно.

однако что делать, если вставить нулевые значения с помощью переменных?

Aarti Meswania

добро пожаловать :)

Рейтинг:
16

Ganesh Nikam

хиии,


To retrieve the value of a variable of a nullable type, you should first test its HasValue property to confirm that it has a value. If you try to read the value when HasValue is False, Visual Basic throws an InvalidOperationException exception. The following example shows the recommended way to read the variable Col2

If Col2.HasValue Then
    Command.CommandText = "INSERT INTO SIGN(TYPESIGN_ID) VALUES('" + CStr(Col2) + "')"
End If


om3n

спасибо за ответ Ганеш никам :)
мои проблемы решены

Рейтинг:
0

Abhinav S

Если это объект, обнуляемый, вам не нужно использовать CStr.
Или же проверьте, не является ли Col2 NOT null перед использованием CStr.


om3n

Я старался как ты говоришь:
Команда.Свойства commandtext = "вставить в знак(TYPESIGN_ID) значения('" + столбец col2 + "')"
Я получаю ошибку "преобразование из строки"')" В тип "Double" недопустимо."

Я тоже стараюсь :
Команда.Свойства commandtext = "вставить в знак(TYPESIGN_ID) значения('" + столбец col2.Метод toString + "')"
Также получаем ошибку "оператор INSERT конфликтует с ограничением внешнего ключа "FK_SIGN_TYPE_SIGN". Конфликт произошел в базе данных "базы данных", таблица "dbo.TYPE_SIGN", TYPESIGN_ID столб''. Заявление было прекращено."

при использовании Col2.ToString значение равно 0

Abhinav S

Если это внешний ключ, то он может иметь значения только из первичного ключа. Если вы попытаетесь установить его равным нулю или 0, вы получите ошибки. Используйте его только с правильными значениями.

om3n

спасибо Абхинав с,
понятно, но мне нужно ввести нулевое значение, а не 0, ни числовое, ни буквенное,
Я пробовал напрямую к базе данных sql server, там можно принимать нулевые значения