BlobStreams 샘플을 통해 파이어닥을 활용한 BLOB 스트리밍 기술 활용 방안을 확인해보세요. 외부 스트리밍과 내부 스트리밍을 모두 구현하는 방법을 알 수 있습니다.

다운로드 위치

  • Start | Programs | Embarcadero RAD Studio Sydney | Samples 경로에서 확인할 수 있습니다:
    • 프로젝트명: Object PascalDatabaseFireDACSamplesComp LayerTFDQueryBlobStreams
  • 서브버전 리파지토리:

 

샘플 활용 방법

  1. 위 경로에서 BlobStreams.dproj 프로젝트를 찾아서 엽니다.
  2. 실행을 위해 F9 버튼 또는 Run > Run 메뉴를 실행합니다.

 

사용하는 파일들

델파이에서 활용할 파일 포함된 내용
BlobStream.dproj
BlobStreams.dpr
프로젝트
fBlobStr.pas
fBlobStr.fmx
메인 폼

 

구현하기

샘플을 실행하기 전에, 주요 컴포넌트들을 먼저 확인해보겠습니다. 오브젝트 인스펙터에서 디자인할 때 사용된 컴포넌트들을 확인할 수 있습니다:

  • 두 개의 TFDQuery – 각각 qSelectqInsert 라는 이름으로 되어 있습니다. 이 컴포넌트들은 SQL 쿼리를 실행하는 데이터셋을 구현하는데 사용합니다. 다음과 같은 설정이 필요합니다:
  • DBMS 연결을 위해 파이어닥(FireDAC)의 연결 속성을 지정합니다. 두 컴포넌트 모두 FDConnection1로 설정하세요.
    • SQL 속성을 설정해줍니다. 쿼리 실행을 위한 SQL 구문은 다음과 같이 지정해주세요.
    • qSelect의 SQL 속성은 select * from {id FDQA_Blob} 으로 설정합니다.
    • qInsert의 SQL 속성은 insert into {id FDQA_Blob} (blobdata) values (:blobdata)
    • qInsert.Param[0] 을 설정해줍시다:
    • Name 속성은 BLOBDATA 로 해주세요.
    • DataType 속성은 BLOB 데이터 타입 중 하나로 설정합니다. 이 샘플에서는 ftBlob 으로 해줍시다.
    • ParamType 속성은 ptInput 으로 설정합니다. 스트림이 데이터베이스 BLOB 값에 기록되고 읽힌다는 의미입니다.
    • StreamMode 속성은 smOpenRead 로 설정합니다. 이 설정값이 기본값입니다. 스트림이 데이터베이스 BLOB 값을 읽는데 사용된다는 의미입니다.
    • TDataSource 이름은 DataSource1로 설정합니다. 이 컴포넌트는 폼에서 데이터 관련 컨트롤과 데이터셋 컴포넌트 사이의 인터페이스를 제공합니다. 이 샘플에서는 데이터셋과 DBMemo1로 이름을 설정한 TDBMemo간의 커뮤니케이션을 위해 사용됩니다. DBMemo1은 데이터셋의 blobdata 필드를 보여줍니다. 이를 위해서는 다음과 같은 설정을 해주셔야 합니다:
      • DataSource의 DataSet 속성은 qSelect 로 설정합니다.
      • DBMemo1의 DataSource 속성은 DataSource1 로 설정합니다.
      • DBMemo1의 DataField 속성은 blobdata 로 설정합니다.

 

주요 컴포넌트들을 설정하고 나면, 애플리케이션을 실행할 수 있습니다. 이제 세 개의 버튼들을 설정해볼까요?

  • 데이터 준비 버튼이 버튼에는 OnClick 이벤트를 설정해줍니다. TFileStream.Create 메소드를 사용할텐데요. 파일에 문자열을 쓰기위해 파일 스트림을 인스턴스화할 것입니다.
  • 인서트 버튼 (외부 스트림). 이 버튼에 OnClick 이벤트를 설정해줍니다. 외부 스트리밍을 구현해줄 것입니다. 외부 스트림은 애플리케이션에 의해 파이어닥으로 제공되는 것입니다 (외부에서 파이어닥으로). 그럼 파이어닥이 이 스트림을 읽게됩니다.
  • 인서트 버튼 (내부 스트림). 이 버튼에 OnClick 이벤트를 설정해줍니다. 내부 스트림이 파이어닥에 의해서 애플리케이션으로 넘어가게 됩니다 (내부에서 파이어닥으로). 그러면 애플리케이션이 스트림을 읽어오게 됩니다. 샘플에서의 설정은 다음과 같이 해주세요:
    • StarTransaction 메소드를 사용해 필수 트랜잭션을 시작합니다.
    • DataStyle 파라메터를 ftStream 으로 설정합니다.
    • StreamMode 파라메터를 smOpenWrite로 설정해 데이터베이스 BLOB 값을 작성합니다.
    • ExecSQL 메소드를 사용해 SQL 커맨드를 실행합니다. 내부 스트림 참조값을 반환해줄 것입니다.
    • 외부 스트림 참조값을 작성합니다.
    • CloseStreams 메소드를 불러와 데이터베이스 API 버퍼를 플러시하고 내부 스트림을 닫습니다.
    • Commit 메소드를 사용해 트랜잭션을 종료합니다.

 

이 샘플에 대한 더 많은 정보를 다음 링크를 참고하세요:

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 17422
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 15830
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18449
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 23996
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25361
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 20742
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41308
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 176659
103 TCOFFEE & CODE WEEK 관리자 2021.02.19 372
102 이 달의 기술자료 - 2020년 08월 험프리 2020.07.30 372
101 이 달의 기술자료 - 2019년 07월 험프리 2019.06.28 372
100 [UX Summit 요약] 터치스크린 POS 화면 디자인 하기 (Point of Sale Screen Concept) 관리자 2020.11.11 371
99 [10.2 도쿄][릴리즈3] C++빌더 리네임 리팩토링 지원 관리자 2018.03.30 369
» 델파이 윈도우 앱 샘플 – BLOB 스트림을 내/외부에서 쉽게 사용하기 관리자 2020.12.15 366
97 이 달의 기술자료 - 2020년 10월 file 험프리 2020.09.24 364
96 데브아트 – SecureBridge 관리자 2020.09.01 364
95 [TCoffeeAndCode 세미나] 보안, 인공지능, 데브옵스 등 관리자 2021.04.21 363
94 이 달의 기술자료 - 2019년 06월 험프리 2019.05.31 363
93 RAD Studio의 생산성 툴링 : 북마크 김원경 2020.07.09 362
92 이 달의 기술자료 - 2020년 06월 file 험프리 2020.05.29 362
91 C++ 빌더 BDE를 FireDAC으로 마이그레이션 자동화 도구 [1] file 험프리 2020.09.10 361
90 델파이 마이그레이션 요구 사항 Top 5 (영문 비디오를 한글 문서로 번역) 관리자 2020.09.05 361
89 Steema – TeeGrid (VCL/FMX용) 관리자 2020.09.01 360
88 RAD Studio의 생산성 툴링 : 탐색기 김원경 2020.07.09 359
87 [베를린 U2] 윈도우 10 스토어에 배포하기 (1분 동영상) 험프리 2016.11.15 359
86 [TOP 10] 2020년 하반기, 개발자가 사랑한 기술자료는? 관리자 2020.12.24 358
85 이 달의 기술자료 - 2020년 05월 file 험프리 2020.04.24 357
84 [프로그래밍 애피타이저] 4장 데이터타입 file 김원경 2020.04.07 357