Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[가이드]모바일 튜토리얼: FireDAC을 모바일 애플리케이션에서 사용하기 (iOS, Android)


Recommended Posts

Docwiki에 있는 "Mobile Tutorial: Using FireDAC in Mobile Applications (iOS and Android)"을 번역한 글: 번역일: 2022년 8월 3일

위로 가기: Mobile Tutorials: Mobile Application Development (iOS and Android)

목차


 

이 튜토리얼은 SQLite을 모바일 장비의 로컬 데이터베이스 저장소로 사용하도록 할 때 FireDAC 프레임워크를 사용하는 기본 절차를 설명한다.

iOS 안드로이드
300px-IPodRunTime.png 320px-AndroidTRunTime.png

1 FireDAC을 사용하여 데이터베이스에 연결하기

FireDAC은 데이터 연결을 일원화할 수 있도록 제공되는 유니버설한 데이터 액세스 컴포넌트(들) 세트이다. 이것은 데이터베이스를 사용하는 멀티-디바이스 애플리케이션을 델파이와 C++빌더 개발환경에서 만들 때에도 사용된다. FireDAC의 아키텍처는 강력하고 공통 기반으로 되어 있어서, 델파이 또는 C++빌더에서 InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, IBM DB2, SQL Anywhere, Access, Firebird, Informix, 등등에 고속으로 직접 접근을 할 수 있다.

FireDAC에 있는 SQLite용 네이티브 드라이버는 SQLite 3.0 버전 이상을 지원한다. 델파이 애플리케이션에서 FireDAC을 통해 SQLite를 사용하는 것에 대한 자세한 내용은 "Using SQLite with FireDAC" 에 설명되어 있다.

애플리케이션이 SQLite를 안에 넣어서 사용하려면 배포 시스템 안에 sqlite3.dll 파일이 반드시 있어야 한다. 이 파일이 없다면 http://www.sqlite.org/download.html 에서 sqlite3.dll 파일을 다운로드 하여 시스템 경로 (예: 64-비트 윈도우에서는 C:\Windows\SysWOW64)에 저장한다.

2 사용자 화면 (UI)를 디자인하고 구성하기

새 프로젝트를 하나 만들자. 이때 Multi-Device Application을 선택한다.

  1. 폼(form) 위에 TFDConnection 컴포넌트를 하나 올려 놓는다.
  2. 올려놓은 TFDConnection 컴포넌트를 오른쪽 클릭하고 Connection Editor를 선택한다.
  3. FireDAC의 Connection Editor 안에서, 이 TFDConnection의 파라미터(들)을 다음과 같이 지정한다
    1. Driver ID 프로퍼티에는 SQLite를 지정한다.
    2. Database 파라미터에는 다음과 같이 지정한다: C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db (데이터베이스가 있는 위치). 파일 열기 대화 창에서 Open을 클릭한다 (파일 열기 창에서 Employees.s3db를 보려면 파일 열기 대화 창의 옵션을 All Files (*.*)로 지정해야 한다).
      ConnectionEdtFD.png
    3. Test 버튼을 클릭하여 해당 연결 정보로 성공적으로 연결되는 지를 확인한다.
      TestConnectionSuccess.png
    4. OK를 클릭하여 FireDAC Connection Editor를 종료한다.
  4. 오브젝트 인스펙터 (Object Inspector) 안에서 TFDConnection를 선택하고, 이 오브젝트의 프로퍼티(들)을 아래와 같이 지정한다.
    1. LoginPrompt 프로퍼티를 False로 지정하여, 사용자에게 데이터베이스 로그인을 요구하는 창이 나타나지 않도록 한다.
    2. Connected 프로퍼티를 True로 지정한다.

3 라이브바인딩스(LiveBindings) 마법사 사용하기

라이브바인딩스(LiveBindings) 마법사를 사용하여 라이브바인딩스 컴포넌트(TBindSourceDB, TBindingsList), TFDQuery, TListView 컴포넌트를 추가한다

3.1 라이브바인딩스(LiveBindings)  컴포넌트 추가하기

  1. View > LiveBindings Designer를 선택하여 LiveBindings Designer를 연다.
  2. LiveBindings Wizard 를 선택한다.
    SelectLiveBindWizard.png
  3. binding task에서 Create a data source를 선택한다.
  4. Next 버튼을 클릭한다.
  5. FireDAC 클래스 이름을 선택한다.
  6. Next 버튼을 클릭한다.
  7. Command TypeQuery로 변경한다.
  8. Command Text 프로퍼티에서 select Name, Department, Seniority from Employee order by Department를 지정한다.
    LiveBindWizardFD.png
  9. Test Command 버튼을 클릭한다.
  10. Next 버튼을 클릭한다.
  11. Finish 버튼을 클릭한다.

위 작업을 마치자 마자 TBindSourceDB 컴포넌트와 TFDQuery 컴포넌트가 폼(form) 위에 추가된다.

3.2 리스트뷰(ListView) 컴포넌트 추가하기

  1. LiveBindings Wizard 를 다시 연다.
  2. binding task에서 Link a control with a field를 선택한다.
    ControlFieldWizard.png
  3. Next 버튼을 클릭한다.
  4. TListView를 선택한다.
  5. Next 버튼을 클릭한다.
  6. BindSourceDB1을 선택한다.
  7. Next 버튼을 클릭한다.
  8. Field Name에서 Name을 선택한다.
    FieldNameWizard.png
  9. Next 버튼을 클릭한다.
  10. Finish 버튼을 클릭하여 LiveBindings 마법사를 종료한다.

4 라이브바인딩스(LiveBindings) 디자이너 사용하기

LiveBindDesignerFinal.png

라이브바인딩스 디자이너 (LiveBindings Designer)를 사용하여  TBindSourceDBTListView 사이에 새 연결(들)을 추가해보자.

  1. TListView 에서 ItemHeader.Text를 선택한다.
  2. BindSourceDB1 컴포넌트의 구성원 중 Department에 바인딩한다. 드래그를 하면 된다(연결선이 생긴다).
  3. TListView 에서 Item.Text를 선택한다.
  4. BindSourceDB1 컴포넌트의 구성원 중 Name에 바인딩한다. 드래그를 하면 된다(연결선이 생긴다).
  5. 오브젝트 인스펙터 (Object Inspector) 안에서 TListView를 선택하고 이 오브젝트의 프로퍼티를 다음과 같이 지정한다.
    1. ItemAppearance 프로퍼티를 ImageListItemRightButton으로 지정한다.
      그 결과, 라이브바인딩스 디자이너에서 보면,  TListView에 새 구성원으로 Item.ButtonText가 추가된 것을 알 수 있다.
    2. Align 프로퍼티를 Client로 지정한다.
  6. 라이브바인딩스 디자이너 안에 있는 TListView의 구성원 중 Item.ButtonText를 선택한다.
  7. BindSourceDB1 컴포넌트의 구성원 중 Seniority에 바인딩한다. 드래그를 하면 된다(연결선이 생긴다).

5 애플리케이션 런타임 준비 작업

FireDAC의 아키텍처는 서로 헐겁게-짝지어지는(loosely-coupled) 여러 계층으로 구성되고 (multilayered) 각 층마다 담당하는 서비스가 있다. 서비스 API는 COM 인터페이스로 정의되어 있어서 다른 계층에서 요청을 보낼 때 해당 인터페이스 팩토리(interface factory)를 사용한다.
FireDAC이 올바로 작동되도록 하려면, 반드시  IFDGUIxWaitCursor 인터페이스와 IFDPhysDriver 인터페이스에 대한 구현을 연결해야만 한다.
우리는 그렇게 하기 위해면, TFDGUIxWaitCursorTFDPhysSQLiteDriverLink 를 폼(form)위에 놓아둔다.

6 모바일 앱에 데이터베이스를 배포하기 위한 지정

앞에서 당신이 사용한 SQLite는 개발 장비인 데스크탑에 있는 것이다. 즉, 사용하는 SQLite의 실제 위치가 당신의 로컬 하드 디스크 드라이브 (예: C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db)에 있다. 모바일 장비에서는, 애플리케이션이 샌드-박스 처리가 된다. 따라서 당신이 읽고 쓸 수 있는 데이터는 (iOS 장비에서는) Documents 폴더, (안드로이드 장비에서는) internal 저장소 안에 있는 당신의 애플리케이션 폴더 아래에 있는 것들 뿐인 경우가 전형적이다.

모바일 장비에 있는 로컬 데이터베이스에 연결하러면, 다음과 같은 조치를 해야한다.

  • 데이터베이스를 모바일 장비로 배포
  • (해당 데이터페이스 파일을 연결하도록) 구성을 변경: (iOS 장비에서는) Documents 폴더, (안드로이드 장비에서는) internal 저장소 안에 위치한 모바일 로컬 데이터베이스를 가리키도록 변경

6.1 Deployment Manager (배포 관리자) 안에서 데이터베이스 파일을 추가하고 지정하기

모바일 상에서 당신의 애플리케이션이 실행되도록 하기에 앞서, 먼저 당신의 데이터베이스 파일 (Employees.s3db)이 모바일로 배포되도록 지정해야 한다.

  1. Project > Deployment를 선택하여 배포 관리자 (Deployment Manager)를 연다.
  2. Add Files를 선택하고, 해당 데이터베이스 파일(예, C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db)을 선택한다.
    AddingDatabaseFile.png
  3. Employees.s3db를 선택하고, Remote Path를 (iOS 용 이라면) StartUp\Documents\로, (안드로이드 용 이라면) assets\internal\로 변경한다.
    Remote Path 지정: iOS 용 인 경우
    600px-RemotePathEmployees.png

    Remote Path 지정: 안드로이드 용 인 경우
    600px-AndroidRemotePathAssets.png
  4. 해당 플랫폼 지정을 선택한다 (Employees.s3db가 있는 행의 Platforms 값에 있는 [...]를 더블-클릭 한다)
    1. Employees.s3db의 플랫폼으로 iOSSimulator, iOSDevice32, iOSDevice64 (또는 Android)가 보이는 지 확인한다.
    2. 만약 Win32가 보인다면, Win32를 제거한다 (데이터베이스 파일을 일부러 Win32 플랫폼으로 복사하지 않아도 된다)
  5. All-Configurations - iOS Device - 32 bit platform, All-Configurations - iOS Device - 64 bit를 선택하거나 또는 All-Configurations - Android 플랫폼을 선택하고, employees.s3db 파일이 StartUp\Documents\ 또는 assets\internal\로 배포되도록 설정되어 있는지를 확인한다.

앞에서 구성한데로, 애플리케이션을 모바일 장비에서 실행하면, 해당 데이터베이스 파일(employees.s3db)은 당신의 애플리케이션 샌드박스 영역 안에 있는 (iOS 용 이라면) StartUp\Documents\ 또는 (안드로이드 용 이라면) assets\internal\로 배포된다.

7 모바일 장비에서 로컬 데이터베이스에 연결되도록 코드를 변경하기

이제 애플리케이션에서 아주 간단한 기능 구현이 완료되었고, 애플리케이션이 사용하는 데이터베이스 파일이 개발 장비인 윈도우 컴퓨터 안에 생성되었다. 이 데이터베이스 파일은 모바일 장비에 있지 않기 때문에 이 상태에서는 모바일 앱이 이 데이터베이스를 사용할 수 없다. 따라서 당신이 이 데이터 파일을 모바일 장비로 복사하거나 또는 모바일 장비에 이 파일을 만들어 넣어야 한다.

7.1 모바일 장비에서  SQLite 데이터베이스 위치 명시하기

  1. 폼 디자이너 (Form Designer)에서 FDConnection1 컴포넌트를 선택한다.
  2. 오브젝트 인스펙터 (Object Inspector)에서 BeforeConnect 이벤트를 더블-클릭한다.
  3. 이벤트 핸들러에 아래 코드를 추가한다.

델파이:

procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Employees.s3db');
end;

레코드(record) 타입인 TPathSystem.IOUtils 유닛 안에 선언되어 있다. 따라서 TPath를 사용하는 유닛은 uses 절에 System.IOUtils 유닛을 추가해야 한다.

C++ (모바일 용은 iOS 앱 개발만 지원):

void __fastcall TForm1::FDConnection1BeforeConnect(TObject *Sender)
{
          FDConnection1->Params->Values["ColumnMetadataSupported"] = "False";
          FDConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "Employees.s3db");
}

레코드(record) 타입인 TPathSystem.IOUtils 유닛 안에 선언되어 있다. 따라서 당신은 헤더 유닛에 #include <System.IOUtils.hpp>을 추가해야 한다.

8 개발한 애플리케이션을 시뮬레이터 또는 모바일 장비에서 실행하기

이제 애플리케이션을 실행할 준비가 끝났다. (Run > Run을 선택한다)

iOS 안드로이드
300px-IPodRunTime.png 320px-AndroidTRunTime.png

9 기타 참고 (See Also)

 


View full 엠바카데로 개발도구 가이드

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.