수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1693874
  • Today | 225
  • Yesterday | 588

Database2006/01/05 12:40

거래처 위치 관리 프로그램으로 시작하는 데이터레이어2 - 1

박문찬

거래처 위치 관리 프로그램을 이용해 데이터레이어의 사용 방법에 대해 알아보는 마지막 연재다. 이번 시간에는 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
2006/01/05 12:40 2006/01/05 12:40
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/1630

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 1548 1549 1550 1551 1552 1553 1554 1555 1556 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 정치인
  • 점유율
  • 육감 기술
  • 시그널
  • 우선순위
  • 천지관
  • gcc
  • 시스템 공격
  • Mashup
  • Snowboard
  • TLS
  • 에러 로그
  • Jelix
  • 법과대학
  • 루브르 박물관
  • Essboard
  • 몸으로 생각하기
  • pair
  • 창의력
  • 가상 메모리 크기

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  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      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.