박문찬
거래처 위치 관리 프로그램을 이용해 데이터레이어의 사용 방법에 대해 알아보는 마지막 연재다. 이번 시간에는 BLOB 파일의 기본적인 입출력 방법과 이런 작업을 데이터레이어에서는 어떻게 처리하는지 살펴본다. 또한 데이터 조회와 갱신 작업을 좀 더 쉽게 처리하는 방법과 함께 XML-RSS 문서를 다루는 방법에 대해서도 알아보자.
BLOB(Binary Large OBject)란 이진 대형 객체로 그래픽, 사운드, 컴파일된 코드와 같이 이진 형태의 데이터가 들어 있는 데이터 열 형식을 말한다. 프로그램을 개발하다 보면 BLOB 파일을 데이터베이스에 입력하고 조회하는 방법에 대해 다루게 되는데, 이번에 다루는 BLOB 파일의 기본적인 입출력 방법과 이런 작업을 데이터레이어에서는 어떻게 처리하는지 살펴보면 조금이나마 도움이 될 것이다.
BLOB 데이터를 DB에 입출력하기
데이터베이스 필드의 일반적인 크기의 한계는 255까지이나 필드에 이미지 파일, 사운드 파일 등의 큰 데이터를 저장해야 할 경우가 있다. 이때 필드의 종류를 nText나 Image 형태로 설정하고 데이터를 입출력하는 방법 중 ADO를 이용해 작업하는 방법은 AppendChunk 및 GetChunk 메쏘드를 사용하거나 스트림(stream) 객체를 이용하는 방법을 사용한다. AppendChunk와 GetChunk 메쏘드를 이용한 방법은 여러 곳에서 다루고 있으므로 생략하기로 하고 스트림 객체를 이용한 방법에 대해서만 설명하도록 하겠다.
스트림 객체는 ADO에서 독립적인 형태로 존재하며, 주로 계층 구조 형태의 저장 장치에서 데이터를 불러오거나 저장하는 역할을 수행하고, ADO 2.5 이상의 버전에서만 사용이 가능하다. 스트림 객체에 대한 자세한 사항은 MSDN을 참고하기 바란다.

<리스트 1>을 설명하면 pub_info라는 테이블의 레코드셋을 구성하고 스트림 객체를 생성, 스트림 객체의 형식은 바이너리로 지정하고 Open 메쏘드로 활성화시킨 후 LoadFromFile 메쏘드를 이용해서 이미지 파일을 스트림 객체로 불러들인다. 불러들인 바이너리 데이터를 Read 메쏘드를 이용해서 pub_info 테이블의 레코드셋의 첫 번째 레코드의 logo 필드에 입력하고, 마지막으로 Update문을 이용해서 데이터베이스에 저장한다. 이 방법은 AppendChunk를 이용한 방법에 비해 매우 단순한 것이다. 이번에는 데이터베이스에 저장되어 있는 이미지를 파일로 저장하는 방법에 대해 알아보자.

<리스트 2>에서 스트림 객체의 Write 메쏘드를 사용해 레코드셋의 이미지를 입력받고, SaveToFile 메쏘드를 이용해 파일로 저장하고 있다. 이미지를 파일로 저장할 때 주의할 사항으로는 원본 이미지의 확장자를 저장해 주어서 파일로 다시 저장할 때 참고할 수 있어야 한다는 것이다.
이것으로 스트림 객체를 이용한 BLOB 파일의 입출력 방법을 간단하게 살펴봤고 이제 거래처 위치관리 프로그램에서는 데이터레이어를 이용해서 어떻게 이미지를 입출력하고 있는지 알아보자.
<리스트 3>을 보면 이미지 파일을 데이터베이스에 추가할 때 mFileAndDB 메쏘드를 사용한 것을 알 수 있다. mFileAndDB 메쏘드는 BLOB 파일을 데이터베이스에 입력하거나 데이터베이스에서 파일로 저장할 때 사용되는 메쏘드로 사용 방법은 <박스>를 참고하기 바란다.
이렇게 mFileAndDB 메쏘드를 이용하면 손쉽게 BLOB 파일의 입출력을 처리할 수 있게 된다.
<리스트 3>에서 저장 완료 후 ‘Picture1. Picture=LoadPicture(strFileName)’라고 사용한 것은 그림이 데이터베이스에는 저장됐지만 저장된 내용이 바로 화면에 보이는 것은 아니기 때문에 추가적으로 사용자에게 보여주기 위한 소스코드이다. 이제 저장된 이미지를 Picture 컨트롤에 보여주는 방법에 대해서 알아보자. 이미지를 보여주는 방법도 몇 가지가 있지만 필자는 Picture 컨트롤에 바인딩을 하는 방법을 사용한다.
<리스트 4>에서와 같이 이미지 필드를 단순히 조회해서 Picture 컨트롤에 바인딩하는 것만으로 이미지가 표시되며 사용되었던 레코드셋은 바로 소멸시켜도 무관하다. <리스트 4>에서는 소스코드로 Picture 컨트롤에 바인딩을 하고 있으나 만약 폼에 데이터 컨트롤을 사용한다면 폼 디자인시에 바인딩을 할 수 있다. 지금까지 설명한 방법들을 사용하면 이미지를 쉽게 관리할 수 있을 것이라 생각한다.
거래처 위치 관리 프로그램을 이용해 데이터레이어의 사용 방법에 대해 알아보는 마지막 연재다. 이번 시간에는 BLOB 파일의 기본적인 입출력 방법과 이런 작업을 데이터레이어에서는 어떻게 처리하는지 살펴본다. 또한 데이터 조회와 갱신 작업을 좀 더 쉽게 처리하는 방법과 함께 XML-RSS 문서를 다루는 방법에 대해서도 알아보자.
BLOB(Binary Large OBject)란 이진 대형 객체로 그래픽, 사운드, 컴파일된 코드와 같이 이진 형태의 데이터가 들어 있는 데이터 열 형식을 말한다. 프로그램을 개발하다 보면 BLOB 파일을 데이터베이스에 입력하고 조회하는 방법에 대해 다루게 되는데, 이번에 다루는 BLOB 파일의 기본적인 입출력 방법과 이런 작업을 데이터레이어에서는 어떻게 처리하는지 살펴보면 조금이나마 도움이 될 것이다.
BLOB 데이터를 DB에 입출력하기
데이터베이스 필드의 일반적인 크기의 한계는 255까지이나 필드에 이미지 파일, 사운드 파일 등의 큰 데이터를 저장해야 할 경우가 있다. 이때 필드의 종류를 nText나 Image 형태로 설정하고 데이터를 입출력하는 방법 중 ADO를 이용해 작업하는 방법은 AppendChunk 및 GetChunk 메쏘드를 사용하거나 스트림(stream) 객체를 이용하는 방법을 사용한다. AppendChunk와 GetChunk 메쏘드를 이용한 방법은 여러 곳에서 다루고 있으므로 생략하기로 하고 스트림 객체를 이용한 방법에 대해서만 설명하도록 하겠다.
스트림 객체는 ADO에서 독립적인 형태로 존재하며, 주로 계층 구조 형태의 저장 장치에서 데이터를 불러오거나 저장하는 역할을 수행하고, ADO 2.5 이상의 버전에서만 사용이 가능하다. 스트림 객체에 대한 자세한 사항은 MSDN을 참고하기 바란다.

<리스트 1>을 설명하면 pub_info라는 테이블의 레코드셋을 구성하고 스트림 객체를 생성, 스트림 객체의 형식은 바이너리로 지정하고 Open 메쏘드로 활성화시킨 후 LoadFromFile 메쏘드를 이용해서 이미지 파일을 스트림 객체로 불러들인다. 불러들인 바이너리 데이터를 Read 메쏘드를 이용해서 pub_info 테이블의 레코드셋의 첫 번째 레코드의 logo 필드에 입력하고, 마지막으로 Update문을 이용해서 데이터베이스에 저장한다. 이 방법은 AppendChunk를 이용한 방법에 비해 매우 단순한 것이다. 이번에는 데이터베이스에 저장되어 있는 이미지를 파일로 저장하는 방법에 대해 알아보자.

<리스트 2>에서 스트림 객체의 Write 메쏘드를 사용해 레코드셋의 이미지를 입력받고, SaveToFile 메쏘드를 이용해 파일로 저장하고 있다. 이미지를 파일로 저장할 때 주의할 사항으로는 원본 이미지의 확장자를 저장해 주어서 파일로 다시 저장할 때 참고할 수 있어야 한다는 것이다.
이것으로 스트림 객체를 이용한 BLOB 파일의 입출력 방법을 간단하게 살펴봤고 이제 거래처 위치관리 프로그램에서는 데이터레이어를 이용해서 어떻게 이미지를 입출력하고 있는지 알아보자.
<리스트 3>을 보면 이미지 파일을 데이터베이스에 추가할 때 mFileAndDB 메쏘드를 사용한 것을 알 수 있다. mFileAndDB 메쏘드는 BLOB 파일을 데이터베이스에 입력하거나 데이터베이스에서 파일로 저장할 때 사용되는 메쏘드로 사용 방법은 <박스>를 참고하기 바란다.
이렇게 mFileAndDB 메쏘드를 이용하면 손쉽게 BLOB 파일의 입출력을 처리할 수 있게 된다.
<리스트 3>에서 저장 완료 후 ‘Picture1. Picture=LoadPicture(strFileName)’라고 사용한 것은 그림이 데이터베이스에는 저장됐지만 저장된 내용이 바로 화면에 보이는 것은 아니기 때문에 추가적으로 사용자에게 보여주기 위한 소스코드이다. 이제 저장된 이미지를 Picture 컨트롤에 보여주는 방법에 대해서 알아보자. 이미지를 보여주는 방법도 몇 가지가 있지만 필자는 Picture 컨트롤에 바인딩을 하는 방법을 사용한다.
<리스트 4>에서와 같이 이미지 필드를 단순히 조회해서 Picture 컨트롤에 바인딩하는 것만으로 이미지가 표시되며 사용되었던 레코드셋은 바로 소멸시켜도 무관하다. <리스트 4>에서는 소스코드로 Picture 컨트롤에 바인딩을 하고 있으나 만약 폼에 데이터 컨트롤을 사용한다면 폼 디자인시에 바인딩을 할 수 있다. 지금까지 설명한 방법들을 사용하면 이미지를 쉽게 관리할 수 있을 것이라 생각한다.
"Database" 카테고리의 다른 글
- 거래처 위치 관리 프로그램으로 시작하는 데이터레... (0)2006/01/05
- 거래처 위치 관리 프로그램으로 시작하는 데이터레... (0)2006/01/05
- 거래처 위치 관리 프로그램으로 시작하는 데이터레... (0)2006/01/05
- 거래처 위치 관리 프로그램으로 시작하는 데이터레... (0)2006/01/05
- 거래처 위치 관리 프로그램으로 시작하는 데이터레... (0)2006/01/05

수안이의 컴퓨터 연구실



Leave your greetings.