복붙노트

[SQL] 널 (null) 값 vb.net에 대한 바운드 데이터 테이블을 확인

SQL

널 (null) 값 vb.net에 대한 바운드 데이터 테이블을 확인

나는 현재 vb.net 창하고 있어요는 SQL 백 엔드 응용 프로그램을 형성한다. 나는 두 개의 독립적 인 SQL 문을 모두 반환이 매우 간단 datatables에 바인딩 된 두 datatables 있습니다. 난 그냥 두 테이블 중 하나에 널 값이 독립적이 있는지 확인해야합니다. 첫 번째 쿼리는 단일 값, 문자 그대로 하나의 셀을 반환합니다. 난 항상 널 (null)를 확인하기 위해 DGV에 다음 코드를 사용했다

Dim Check As Integer = dt.Rows(1).cells(1).value

이 여기에 작동하지 않습니다 그러나, 데이터 유형은 정수이므로 것으로 보인다. 보통 DGV와 내가 클릭 이벤트를하고있는 중이 야와 최종 사용자가 볼 수있는 DGV에서 당겨입니다.

두 번째 SQL 쿼리는 2 세포이다. 그것은 2 행과 열을 하나 가지고 있는데 반드시 둘 중하지 않습니다 null이 양쪽 세포를 확인하기 위해 필요에 따라서.

나는 온라인으로 주위를 찾고있다하지만 난 나를 위해 작동하는 것 같다 아무것도 찾을 수 없습니다.

------------------------최신 정보------------------------- ---

 Public Shared Function ToInt32(Value As Object) As Integer
    If DBNull.Value.Equals(Value) Then
        Return 0
    Else
        Return Convert.ToInt32(Value)
    End If
End Function



  Dim ncheck As Integer
  ncheck = SafeConvert.ToInt32(dt.Rows(1)(1))

어떻게 출구 서브 메시지 상자를 실행하기 위해 if 문이 ncheck를 사용해야합니까? ncheck은 그냥 나 충돌로가는 정수가 아닌 경우 그것은 나에게 보인다.

해결법

  1. ==============================

    1.사용 DbNull.Value :

    사용 DbNull.Value :

       If Not DbNull.Value.Equals(dt.Rows(1).Item(1).value) Then 
          ' do something
       Else 
          ' do something else 
       End If
    

    또는 사용

    If dt.Rows(1).Item(1).value=DbNull.Value
    
  2. ==============================

    2.다음은 공유 방법으로 하나를 사용 또는 어쩌면 확장으로 변환 할 수 있습니다 안전 변환 방법의 집합입니다 :

    다음은 공유 방법으로 하나를 사용 또는 어쩌면 확장으로 변환 할 수 있습니다 안전 변환 방법의 집합입니다 :

    Class SafeConvert   
        Public Shared Function ToInt32(Value As Object) As Integer
            If DBNull.Value.Equals(Value) Then
                Return 0
            Else
                Return Convert.ToInt32(Value)
            End If
        End Function
    
        Public Shared Function ToInt64(Value As Object) As Int64
            If DBNull.Value.Equals(Value) Then
                Return 0
            Else
                Return Convert.ToInt64(Value)
            End If
        End Function
    
        Public Shared Function ToDecimal(Value As Object) As Decimal
            If DBNull.Value.Equals(Value) Then
                Return 0
            Else
                Return Convert.ToDecimal(Value)
            End If
        End Function
    
        Public Shared Shadows Function ToString(Value As Object) As String
            If DBNull.Value.Equals(Value) Then
                Return String.Empty
            Else
                Return Convert.ToString(Value)
            End If
        End Function
    
    End Class
    

    예:

    Dim nCheck As Integer
    nCheck = SafeConvert.ToInt32(dt.Rows(1)(1))
    ' or
    nCheck = SafeConvert.ToInt32(dt.Rows(0).Item(1))
    

    물론, 행이 유효하고 이것은 단지 DBNull이 아닌 NullReference을 테스트, 즉 인덱스에 셀을 가지고있다.

  3. from https://stackoverflow.com/questions/29611679/check-bound-datatable-for-null-value-vb-net by cc-by-sa and MIT license