문제

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top