유형 비교 ASP.NET 및 DBNULL에 대한 질문
문제
MSSQL 데이터베이스에서 기사 레코드를 가져 오는 기능이 있습니다. 일부는 PDF에 대한 URL이고 다른 일부는 SQL에 저장된 실제 기사입니다. 저장된 기사에는 레코드에 URL (DBNULL)이 없으므로이를 구문 분석 할 수 있습니다. 간단한 테스트를 시도했습니다.
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
그러나 나는 "Conversion from type 'DBNull' to type 'String' is not valid.
"예외. 재미있는 부분은 위의 조건부에서 시계를 할 때 돌아옵니다. True
또는 False
.
왜 이런 일이 일어나고 있는지 및/또는이 문제를 해결하는 방법을 아는 사람이 있습니까? 감사!
해결책
왜 사용하지 않는가 :
If Row.IsNull("url") Then
//' do something here....
End If
다른 팁
나는 항상이 테스트를 기록에서 사용합니다.
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
좋아요
if (DBNull.Value.Equals(Row.Item("url")))
노력하다
If Row.Item("url") = DBNull.Value
오류가 당신에게 그것을 말하고 있습니다 Row.Item("url")
a System.String
따라서이 시점의 값은 다음과 같습니다 DbNull
.
다음과 같은 것을 시도하십시오.
If Row.Item("url") Is Nothing Then
//' do something here....
End If
그냥 할 수 없어요
If Row.Item("url") = DBNull.Value Then
End If
내 선호는 다음과 같습니다.
If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
'Hooray!
End If
VB에서는 또한 사용할 수 있습니다 IsDBNull
기능 (Microsoft.VisualBasic
면책 조항) 직접 :
If Not IsDBNull(Row.Item("url")) Then
'Hooray!
End It
이것을 사용하십시오.
if row("ColumnName") is DBNull.value Then
'do something
end if
이 경우 사용해야한다는 것을 알 수 있으며 유형이 아닌 값을 비교할 수 있습니다. DBNULL 대신 아무것도 반환하지 않는 데 사용할 수있는 재사용 가능한 기능에 넣을 수도 있습니다.
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function
제휴하지 않습니다 StackOverflow