[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.사용 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.다음은 공유 방법으로 하나를 사용 또는 어쩌면 확장으로 변환 할 수 있습니다 안전 변환 방법의 집합입니다 :
다음은 공유 방법으로 하나를 사용 또는 어쩌면 확장으로 변환 할 수 있습니다 안전 변환 방법의 집합입니다 :
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을 테스트, 즉 인덱스에 셀을 가지고있다.
from https://stackoverflow.com/questions/29611679/check-bound-datatable-for-null-value-vb-net by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 날짜와 SQL 삽입 문을 루핑 (0) | 2020.05.29 |
---|---|
[SQL] 테이블에 레코드를 삽입 할 때 작은 따옴표로 문자열 필드는 오류의 원인이 (0) | 2020.05.29 |
[SQL] SQL 서버에서 동적 SQL 피벗 (0) | 2020.05.29 |
[SQL] 여러 행을 기준으로 테이블에서 MYSQL 선택 (0) | 2020.05.29 |
[SQL] MS 액세스 제한 (0) | 2020.05.29 |