일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- WPF
- c#
- DrawRectangle
- 공공 데이터 포털
- eventhandler
- C# MDB Handle
- Json.NET
- Cell Border Style
- sqlite3
- Excel Cell Format
- MVC
- C# 파일 암/복호화
- Winform
- 객체지향
- TDD
- solid
- NUnit
- delegate
- JSON
- eventargs
- 디자인 패턴
- 경기도 버스정보시스템
- 버스 API
- MDB Connect
- DrawEllipse
- GDI+
- C# MDB
- 시
- 경기도 버스
- MDB Select
Archives
- Today
- Total
White Whale Studio
DbDataReader 다루기 본문
반응형
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