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 값인지 판단하여 처리합니다.
반응형