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 14390
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21065
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
1342 [DelphiCon 요약] 델파이로 웹 다루기 (Powering the Web with Delphi) file 관리자 2021.02.16 1095
1341 [고객 사례- POS, C++빌더] YG-POS - 소상공인을 위한 무료 소프트웨어 관리자 2021.02.08 632
1340 [고객 사례- 금융, 델파이] 주식, 화폐 등 금융 정보 분석 소프트웨어 - 게임스탑, 비트코인, 아마존, 구글 등 관리자 2021.02.04 613
1339 ‘장기 활용 가능성’이 가장 뛰어난 프레임워크는? (델파이 VS. WPF VS. ELECTRON) 관리자 2021.02.01 458
1338 [델파이 웹개발] 델파이로 풀스택 웹 개발하기 - uniGUI 활용 (Full Stack Web Development with uniGUI for Delphi) file 관리자 2021.02.01 4278
1337 버전별 업데이트된 주요 기능들 (C++빌더6 / 델파이7부터 최신 버전까지!) 관리자 2021.01.29 374
1336 이 달의 기술자료 - 2021년 02월 file 험프리 2021.01.26 506
1335 [샘플 프로젝트] 심박 측정기-델파이/C++빌더와 IOT 연동하기 관리자 2021.01.25 450
1334 C++ 유니코드 문자열 리터럴(Unicode String Literal) 활용 방법 관리자 2021.01.22 439
1333 C++빌더 마이그레이션, C++ 프로젝트를 간편하게 업데이트 하는 방법 관리자 2021.01.19 307
1332 [고객 사례- 델파이, 게임] 체스 오프닝 위저드 - 60,000여명의 체스 플레이어가 실제로 사용하는 앱 관리자 2021.01.18 702
1331 생산성을 끌어올려줄 겟잇(GetIt)의 최신 컴포넌트들 관리자 2021.01.18 498
1330 [DelphiCon 요약] High DPI 고해상도를 VCL에서 활용하기 (Leveraging High DPI in VCL Applications) 관리자 2021.01.13 763
1329 [DelphiCon 요약] Spring4D 소개 - 델파이 개발을 한수준 높이기 (Introduction to Spring4D - Taking Delphi Development to the Next Level) 관리자 2021.01.08 1135
1328 새해 목표: LEARN, TEACH, REPEAT. 관리자 2021.01.05 313
1327 [DelphiCon 요약] 델파이로 함수형 프로그래밍하기 (Functional Programming With Delphi) 관리자 2020.12.29 707
1326 [DelphiCon 요약] 델파이 고성능 구현 (High Performance Delphi) 관리자 2020.12.27 890
1325 [TOP 10] 2020년 하반기, 개발자가 사랑한 기술자료는? 관리자 2020.12.24 350
1324 이 달의 기술자료 - 2021년 01월 file 험프리 2020.12.24 402