2013-09-10 2 views
1

У меня есть следующий код:Как сравнить DBNull выражение

dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt") 

который имеет значение DBNull.

теперь я хочу, чтобы сравнить его:

if dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt")=nothing 

....

...

я

Run-time exception thrown : System.InvalidCastException - Operator is not valid for type 'DBNull' and 'Nothing'. 

Идеи, как сравнить это значение, чтобы увидеть если он содержит DBnull?

if dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt")=system.DBnull также возвращает ошибку.

+0

См. Http://stackoverflow.com/questions/222834/handling-dbnull-data-in-vb-net – iamCR

ответ

1

Используйте IsDBNull функции:

Возвращает значение Boolean, указывающее, оценивает ли выражение System.DBNull cl жопа.

If IsDBNull(dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt")) Then 
    ' value is null 
End If 
+0

Проверка ... Поскольку этот ответ пришел первым., –

+0

@SNash На самом деле это был не первый один. – MarcinJuraszek

+0

Я видел, что ваш ответ настал за 30 секунд до того, как Dennis Traub –

4

Вы можете использовать IsDBNull() функцию

If IsDbNull(dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt")) Then ... 

или сравнить Agains DBNull.Value

If dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt") Is DBNull.Value Then ... 
1

DBNull.Value обеспечивает способ сделать сравнение. Таким образом, вы можете написать:

if dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt")=DBNull.Value 
+0

* is * DBNull.Value –

+0

Ну, C# - мой «родной язык», поэтому я не 100%, но используя эту ссылку: http://msdn.microsoft.com /en-us/library/system.dbnull.value.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1, я думал, что 'DBNull.Value.Equals (a)' был эквивалентом 'a = DBNull.Value' (Это будет' DBNull.Value == a' в C#). Я был не прав? –

2

Другой вариант заключается в использовании Convert.DBNull (такой же, как DBNull.Value):

If dsParticippantInfo.Tables(0).Rows(0)("Contract_Amt") Is Convert.DBNull Then 
    ' value is null 
End If 

Я предпочитаю этот синтаксис, потому что это очень похоже до Is Nothing сравнение.