White Whale Studio

DbDataReader 다루기 본문

IT Engineering/C#.net

DbDataReader 다루기

glorymind 2020. 3. 30. 18:02
반응형

C#에서 데이터를 읽을 때 

System.Data.Common.DbDataReader를 사용할 경우가 있습니다.

구조체를 활용해서 직접 변환을 하는 경우도 있지만

데이터 타입이 맞지 않는 경우 오류가 발생하기도 합니다.

예를들어 구조체 (여기서는 MODEL)로 바로 변환한다고 하면

 

List<MODEL>  resultsList = r.ToList<MODEL>();

 

위와 같이 변환이 됩니다만..

일부 컬럼의 경우 데이터 타입이 안맞는 경우 쓰레기 값이 들어가기도 합니다.

따라서 이러한 경우 각 컬럼에 필요한 데이터 타입에 맞게 설정을 직접 해줘야하는 경우가 있을수 있습니다.

 

이러한 경우에 대해 살펴봅니다.

1
2
3
4
5
6
7
8
9
10
11
12
while (r.Read())
                    {
                        MODEL model = new MODEL();
 
                        model.a = !r.IsDBNull(0) ? r.GetString(0) : ""; ;
                        model.b = !r.IsDBNull(1) ? r.GetString(1) : "";
                        model.c = !r.IsDBNull(2) ? r.GetString(2) : "";
                        model.d = !r.IsDBNull(3) ? r.GetString(3) : "";
                        model.e = !r.IsDBNull(34) ? r.GetDecimal(34) : 0;
                        model.f = !r.IsDBNull(39) ? r.GetString(39) : "";
                        resultsList.Add(model);
                    }
cs

 

 

위에서 r이 바로 

System.Data.Common.DbDataReader 입니다.

 

예시로 Model 의 a,b,c,d,e,f, 항목에 각각의 데이터를 입력하려고 하는데

이 때 타입을 맞춰주기 위해 r.GetString, r.GetDecimal 과 같이 데이터 타입을 맞춰줍니다.

데이터에 따라 해당 Column 데이터값이 null 인경우가 있는데 이 경우 또한 예외 처리를 해주어야합니다.

 

방법위 위의 코드와 같이 IsDBNull이라는 함수를 사용해서 null 값인지 판단하여 처리합니다.

반응형

'IT Engineering > C#.net' 카테고리의 다른 글

C# Oracle OleDB 연동  (0) 2020.08.14
C# & Oracle US7ASCII CharacterSet ISSUE  (0) 2020.08.14
C# Firefox Runtime Package - XulRunner - Gecko  (0) 2017.02.15
[Nunit] 테스트 해보기  (0) 2016.08.12
[Effective Coding for Memory]  (0) 2016.08.11
Comments