더북(TheBook)

저장 프로시저나 질의 구문을 실행했을 때의 레코드 값을 얻어 오고 싶으면 레코드를 지칭하는 객체, 즉 레코드셋 객체를 결과로 얻어 올 수 있습니다. 예를 들어 a가 123 이상을 가진 레코드를 찾는다면 다음과 같습니다.

DbCommand cmd = new DbCommand(db);
cmd.Parameters[0] = 123;
DbRecordset rs = cmd.Execute("select (a,b,c) from table1 where a>=?"); 

select 구문으로 레코드를 0개 이상 얻어 옵니다. 그러면 얻어 온 레코드들을 순회하면서 내용을 꺼내 오면 됩니다(다음 예시에서 필드 c는 문자열 타입이라고 가정합니다).

foreach(DbRecord r in rs)
{
  int a = r.GetField("a");
  int b = r.GetField("b");
  string c = r.GetField("c");
  ...; // 여기서 얻은 필드들을 사용한다.
}

데이터베이스의 필드 값 타입은 숫자나 문자열입니다. 대부분 프로그래밍 언어의 기본 데이터 타입과 비슷하지만 완전히 일치하지는 않습니다. 데이터베이스는 여러 프로그래밍 언어에서 사용 가능해야 합니다. 어떤 것은 최대 길이나 정밀도(precision)가 있는 데이터 타입도 있으며, 물론 null 값을 수용 가능한 것도 있습니다. 따라서 필드에 값을 읽거나 쓸 때 혹은 명령 객체에 매개변수를 넣거나 꺼내 올 때는 다음 추가 작업을 해야 합니다.

1. 값을 읽을 때는 읽은 값을 가지고 있는 객체, 즉 값 객체(다음 예시 코드에서는 DbVariable)를 얻습니다.

2. 값 객체가 null인지 검사합니다. 그리고 값 객체의 실제 값을 원하는 값으로 변환합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.