데이터베이스 연동시 DBNull 에러 피하기

데이터베이스 연동관련 프로그래밍을 할 때 DBNull 관련 예외를 처리하는것이 가장 중요하다고 생각합니다. 여기에서는 3가지 방법으로 DBNull 예외를 제어하는 방법을 살펴보도록 하겠습니다.

1. 데이터와 DBNull을 직접 비교하는 방법

가장 일반적인 방법입니다. 닷넷에서 DBNull은 정확히 System.DBNull.Value 값입니다. 읽으려하는 데이터를 System.DBNull.Value 와 비교하여 아래와 같이 처리 할 수 있습니다.

[code lang=”vbnet”]
if item("고객이름") is System.DBNull.Value then
‘ DBNull 일 경우 처리
else
‘ DBNull 이 아닐경우 처리
end if
[/code]

위와같이 처리하는 방법이 가장 일반적인 방법이지만, 코드 작성에 상당한 시간을 소요해야 할 것입니다.

2. ToString() 함수를 이용하는 방법

이 함수를 이용하면 간단하게 System.DBNull.Value 예외를 피할 수 있습니다. 아래와 같이 각 데이터에 .ToString() 함수만 적어주면 System.DBNull.Value 항목은 “” 즉, String.Empty 값으로 반환됩니다.

[code lang=”vbnet”]
item("고객이름").ToString()
[/code]

이 방법으로 가장 간단하게 DBNull 예외를 피할 수 있지만, 데이터를 파싱해야 하는 경우에는 에러가 발생할 여지가 남아있습니다. 예를 들어 Double.Parse() 등의 함수를 이용하여 변환을 시도할 때 DBNull 이여서 인자로 String.Empty 값이 입력된다면 에러가 발생합니다.

3. IsNull() 함수를 이용하는 방법

DataRow 클래스와 관련된 변수로 데이터를 받아서 처리하는 경우에는 IsNull() 함수를 이용해서 예외를 피할 수 있습니다. 읽으려고 하는 데이터의 컬럼에 대해 IsNull() 함수를 실행하여 DBNull 여부를 먼저 체크하는 방법입니다.

[code lang=”vbnet”]
if row.IsNull("고객이름") = true then
‘ DBNull 일 경우
else
‘ DBNull 이 아닐경우
end if
[/code]

1번과 유사한 방법이지만 iif 등의 조건문과 결합한다면 상당히 간결한 코드를 구성할 수 있는 장점이 있습니다.

[code lang=”vbnet”]
Dim x as Double
x = System.String.Format("{0:F3}", IIF(row.IsNull("고객번호"), 0, row.item("고객번호")))
[/code]

위와 같이 처리하면 예외를 피할 수 있습니다.

zemna

Programmer/Web/Mobile/Desktop

You may also like...

Leave a Reply