Akses Database SQLite Android menggunakan Delphi XE 8

Tutorial kali ini akan membahas tentang pembuatan aplkasi berbasis Android untuk mengakses data yang tersimpan database SQLite. Sebagaimana yang kita ketahui bahwa SQLite adalah database engine yang compact dan kecil ukurannya, sehingga cocok digunakan di perangkat yang kecil memorinya seperti smartphone Android.  Google sendiri merekomendasikan penggunaan database engine ini untuk diterapkan di OS Android besutannya.

Pada prinsipnya, akses database SQLite di Android relatif sama dengan akses database di PC/komputer. Komponen Delphi yang digunakan juga relatif sama. Setidaknya Anda akan membutuhkan tiga macam kelompok komponen untuk mengakses database, yakni : [AdSense-A]

– komponen ‘connector’ untuk menghubungkan aplikasi Delphi dengan database engine,

– komponen ‘table’ atau ‘query’ untuk mengeksekusi perintah (SQL query) ke tabel setelah database terhubung

– komponen ‘data access’/’data source’, sebagai penghubung/interface untuk komponen tampilan (dbGrid, dbNavigator, dll)

Hanya saja, khusus untuk aplikasi Android berbasis Delphi XE8 ini implementasi tiga kelompok komponen agak sedikit berbeda, walaupun pada intinya sama saja. Bagi Anda yng sudah terbiasa bekerja dengan Delphi untuk membuat aplikasi desktop yang berhubungan dengan database, maka seharusnya tidak akan terlalu susah untuk migrasi ke Android.

Baiklah, mari kita mulai tutorialnya. Pertama kali silahkan buat project Android baru di Delphi XE-8 melalui menu File – New – Multi Device Application Delphi. Kemudian pilih ‘Blank Application’ dan tekan tombol ‘OK’, sehingga akan tercipta project baru dan akan muncul tampilan form designer baru. Silahkan disimpan dulu nama projectnya (Save All) sesuai dengan keinginan (contoh : PSQLite untuk project dan USQLite untuk unitnya). Berikutnya, setting target kompilasi ke platform Android dan style form juga ke Android seperti tampak pada gambar di bawah:

delphi target platform android - style android

Ambil komponen FDConnection (Tab ‘FireDAC’) dan letakkan di form designer. Komponen FDconnection ini nantinya kan berfungsi sebagai ‘connector’ atau penghubung aplikasi ke database engine melalui sebuah file driver. Sebagai referensi, mulai Delphi XE 7 ke atas, Embarcardero (Delphi principal) lebih merekomendasikan komponen FireDAC daripada komponen DbExpress untuk tiap aplikasi yang mengakses database.

Kemudian atur properti komponen FDConnection sebagai berikut :

Properti Nilai
DriverName SQLite
LoginPrompt False

Untuk menciptakan database sql ‘on the fly’ di dalam IDE Delphi, silahkan double click komponen FireDAC, hingga muncul jendela FireDAC Connection Editor sebagai berikut, kemudian isi parameter ‘Database’ dengan (misalnya) ‘latihan.s3db’. Sebaiknya Anda menulis lengkap absolute file path-nya, misalnya ‘C:\Xe8\contoh\latihan.s3db’. Nantinya Delphi akan menciptakan database ‘latihan.s3db’ ini secara otomatis.

FireDAC Connection Editor - membuat database sqlite s3db di IDE delphi

Satu lagi settingan yang penting untuk diubah adalah parameter ‘LockingMode’. Ubah nilai parameter ini dari settingan default ‘Exclusive’ menjadi ‘Normal’. Jika settingan sudah dilakukan semua, klik tombol ‘Test’, abaikan jika muncul jendela login (klik OK saja) dan seharusnya akan muncul popup ‘Connection establish successfully’.

FireDAC Connection Editor - [FDConnection1] - connection establish successfully

Kemudian tekan tombol ‘OK’ untuk kembali ke form designer. Berikutnya, ubah nilai properti ‘Connected’ menjadi ‘true’ di jendela Object Inspector. Dan terakhir, tambahkan event handler pada event ‘BeforeConnect’ (cari di jendela Object Inspector bagian tab ‘Event’, kemudian double click) dengan script di bawah.

procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
 {$IF DEFINED(iOS) or DEFINED(ANDROID)}
  FDConnection1.Params.Values['Database'] :=
      TPath.Combine(TPath.GetDocumentsPath, 'latihan.s3db');
  {$ENDIF}
end;

Script di atas kurang lebih fungsinya adalah mendefinisikan file path database ketika compiler directive mendeteksi aplikasi berjalan di platform Android/iOS, sesaat sebelum melakukan koneksi ke database engine SQLite. Jangan lupa menambahkan unit System.IOUtils dibawah ‘implementation’, karena TPath berada di unit ini.

implementation

{$R *.fmx}

uses  System.IOUtils;

Langkah kedua, ambil komponen FDQuery dan letakkan di Form Designer. Komponen ini akan kita gunakan untuk menciptakan tabel dengan nama ‘tbcontoh’ di database latihan.s3db. Untukitu silahkan ubah properti komponen tersebut sebagai berikut :

Properti Nilai
Name FDQueryCreateTable
SQL CREATE TABLE IF NOT EXISTS tbcontoh (data TEXT NOT NULL)

Perintah query SQL di atas maksudnya kurang lebih adalah menciptakan tabel baru jika sebelumnya belum ada dengan nama ‘tbcontoh’ dengan sebuah field yang bernama ‘data’ yang bertipe ‘TEXT’. Untuk mengeksekusi perintah SQL di atas saat design time, dapat Anda lakukan dengan double click komponen FDQueryCreateTable tadi, dan setelah terbuka jendela FireDAC Query Editor, tekan tombol ‘Execute’.

FireDAC Query Editor - [FDQueryCreateTable] eksekusi perintah query sql - Delphi XE 8 Android

Langkah ketiga, mari kita coba atur tampilan User Interface aplikasi terlebih dahulu. Ambil komponen TListView, TToolbar, TLabel dan TButton (2 buah) seperti tampak pada gambar di bawah.

form designer latihan sqlite android delphi xe 8

Perhatikan bahwa komponen Label dan Button menjadi ‘child’ dari komponen ToolBar (dapat Anda lihat di jendela ‘Structure)

project_training_delphi-android_lat sqlite_latsqlite_PLatSqlite button child komponen toolbar

Atur properti komponen-komponen tersebut di Object Inspector sebagai berikut

Komponen Properti Nilai
TListView Align Client
TButton1 Align Left
StyleLookup deletetoolbutton
TButton2 Align Right
StyleLookup addtoolbutton
TLabel Align Client
Text Latihan SQLite
TextSetting-HorzAlign Center

Dari settingan di atas, maka tampilan form designer akan menjadi sebagai berikut :

tampilan form designer latihan sqlite android delphi xe setelah disetting

Langkah keempat, kita akan melakukan ‘binding’ komponen UI (tampilan User Interface) dengan komponen database melalui ‘LiveBinding’ dengan komponen datasource sebagai penghubungnya. Caranya adalah sebagai berikut :

– Buka jendela LiveBinding melalui menu View-LiveBindings Designer

– Klik tombol wizard (lihat gambar di bawah, kemudian pilih ‘Create a data source’. Pertama kali kita harus menciptakan sebuah komponen ‘datasource’ sebagai penghubung komponen UI dengan database. Klik tombol Next, dan pilih ‘FireDAC’

2016-06-19 10_35_56-ULatSqlite - Delphi XE8 - PLatSqlite Livebinding wizard

Klik tombol ‘Next’ kembali, dan di jendela yang baru muncul, pilihan opsi ‘Query’ di parameter ‘Command Type’ kemudian isi kotak edit di bawah tulisan ‘Command Text’ dengan ‘select * from tbcontoh’ dan tekanlah tombol ‘Test Command’. Jika muncul popup window ‘Test command succeded’ berarti Anda sudah berhasil menciptakan tabel ‘tbcontoh’ di database ‘latihan.s3db’. Selamat, tapi Belanda masih jauh :). Berikutnya tekan tombol ‘Next’ dan kemudian tombol ‘Finish’. Perhatikan di Form Designer (dan di LiveBindings Designer) sekarang ada komponen baru ‘BindSourceDB1’ dan ‘FDQuery1’ yang diciptakan menggunakan proses LiveBinding wizard tadi.

BindSourceDB1 dan FDQuery1 Delphi Android SQLite

Langkah berikutnya adalah menghubungkan komponen UI (dalam aplikasi ini adalah komponen ListView) dengan komponen BindSourceDB1 sebagai komponen datasource-nya. Caranya, klik kembali tombol ‘LiveBinding wizard’ dan pilih opsi ‘Link control with a field’, tekan tombol ‘Next’ dan pilih komponen ‘ListView1’ di tab ‘Existing Control’.

LiveBindings Wizard - link controll with a field - delphi xe 8 sqlite android

Tekan tombol ‘Next’ sekali lagi dan pilih ‘BindSourceDB1’

2016-06-19 11_25_32-LiveBindings Wizard - bindsourceDB1 - delphi xe android sqlite

Tekan tombol ‘Next’ lagi dan pilih field ‘data’ (ini adalah field yang sebelumnya kita buat melalui komponen FDQueryCreateTable).

LiveBindings Wizard - pilih field data - delphi xe 8 android sqlite

Berikutnya tekan tombol Next/Finish untuk mengakhiri livebinding wizard. Perhatikan di jendela LiveBindings Designer, ada sebuah garis anak panah yang menghubungkan antara ListView1 dan BindSourceDB1.

Langkah berikutnya adalah menghubungkan property Item.Text milik ListView agar menampilkan setiap data yang ada di tabel ‘tbcontoh’. Jika melalui LiveBindings Designer caranya cukup mudah, yakni dengan menarik anak panah (tekan mouse, tahan, arahkan) dari field ‘data’ di FDQuery di bawah BindSourceDB1 ke property Item.Text milik komponen ListView1. Hasilnya dapat Anda lihat pada gambar di bawah.

LiveBinding designer - menghubungkan field data ke listview item-text

Sampai dengan empat langkah di atas, Anda sudah berhasil menciptakan database SQLite (latihan.s3db), menciptakan tabel (tbcontoh) dan satu field (data) di database tersebut, dan menampilkan datanya ke komponen listView. Langkah berikutnya (kelima) adalah mengisi event handler untuk tombol tambah data (tombol ‘+’) dan hapus data (tombol ‘-‘) yang ada di pojok kanan dan kiri aplikasi.

Langkah kelima, ambil komponen FDQuery dari Tab ‘FireDAC’ di Component Pallete dan letakkan di form designer. Ambil dua komponen FDQuery dan ubah nilai properti masing-masing komponen sebagai berikut :

Komponen Properti Nilai
FDQuery2 Name FDQueryInsert
SQL INSERT INTO tbcontoh (data) VALUES (:data)
FDQuery3 Name FDQueryDelete
SQL delete from tbcontoh where data = :data

Kemudian isikan event handler untuk Button2 (tombol + di pojok kanan aplikasi) dengan cara men-double click-nya. Isikan script di event onClick milik komponen Button2 sbb :

procedure TForm2.Button1Click(Sender: TObject);
var
  Values: array[0 .. 0] of String;
begin

       Values[0] := String.Empty;
       InputQuery('Masukkan data', ['data:'], Values, Self.OnInputQuery_Close)
end;

Function InputQuery adalah function di Android yang memanggil kotak dialog dimana user dapat mengisikan sebuah nilai di dalamnya. Perhatikan bahwa di function ‘InputQuery’, terdapat tambahan procedure ‘Self.OnInputQuery_Close’ (identifier ‘Self’ di sini adalahTForm1’). Oleh karena itu deklarasikan procedure baru tersebut di bawah statement ‘private’ sbb :

private

    { Private declarations }

    procedure OnInputQuery_Close(const AResult: TModalResult; const AValues: array of string);

Dan kemudian definisikan procedure tersebut, sbb :

procedure TForm1.OnInputQuery_Close(const AResult: TModalResult; const AValues: array of string);
var
  TaskName: String;
begin
 TaskName := string.Empty;
  if AResult <> mrOk then
    Exit;
  TaskName := AValues[0];
  try
    if (TaskName.Trim <> '')
    then
    begin
      FDQueryInsert.ParamByName('data').AsString := TaskName;
      FDQueryInsert.ExecSQL();
      FDQuery1.Close();
      FDQuery1.Open;
    end;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;

Event handler untuk menambahkan data di database sudah selesai, sekarang gilirannya kita menambahkan event handler untuk menghapus data data di database.

Tambahkan event handler onClick di Button1 sebagai berikut:

procedure TForm1.Button1Click(Sender: TObject);
var
  TaskName: String;
begin
  TaskName := ListView1.Selected.Text;

  try
    FDQueryDelete.ParamByName('data').AsString := TaskName;
    FDQueryDelete.ExecSQL();
    FDQuery1.Close;
    FDQuery1.Open;
   except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;

Dan langkah terakhir (ke enam) adalah tahap finalisasi. Pada tahap ini setidaknya ada dua langkah yang harus dilakukan yakni, menambahkan komponen the TFDGUIxWaitCursor dan TFDPhysSQLiteDriverLink, dan menambahkan file database ke dalam file project agar ketika di-compile menjadi file APK, file database ini akan dimasukkan ke package APK dan ketika diinstal akan masuk ke dalam file system Android.

TFDGUIxWaitCursor dan TFDPhysSQLiteDriverLink Delphi XE8 Android SQLite

Komponen TFDGUIxWaitCursor terletak tab ‘FireDAC UI’ dan komponen TFDPhysSQLiteDriverLink terletak di tab ‘FireDAC Links’ di Component Pallete. Kedua komponen ini mutlak diperlukan saat kita menggunakan komponen FireDAC agar semua komponen yang menggunakan teknologi FireDAC dapat berjalan sebagaimana mestinya.

Sedangkan untuk menambahkan file database ke dalam file project caranya cukup mudah. Klik kanan nama project di jendela Project Manager (biasanya di sebelah kanan atas IDE Delphi) dan pilih opsi ‘Add’. Ketika muncul jendela browse file, segera pilih file database Anda tadi (latihan.s3db)

menambahkan file database ke dalam project delphi xe 8 android sqlite

Seharusnya tampilan jendela Project Manager akan menjadi seperti gambar di bawah

2016-06-19 13_02_23-ULatSqlite.dproj - Project Manager - tampilan setelah ditambahkan file database - delphi xe8 sqlite

Akhirnya selesai sudah tutorialnya :). Jangan lupa untuk save all semua konfigurasi yang telah Anda lakukan tadi. Jika sudah, running project Anda (F9) ke dalam emulator atau device Android langsung. Berikut ini adalah tampilan awal program setelah di-running di smartphone Android :

Tampilan awal aplikasi Android akses database SQLite dengan Delphi XE 8

Jika sudah terinstal aplikasinya cobalah untuk menekan tombol + untuk menambahkan data dan tombol – untuk menghapus data. Baca kembali script-script yang telah Anda tulis tadi, dan saya yakin sekarang Anda akan semakin mengerti makna dari script yang Anda masukkan tadi :). Selamat bereksperimen 🙂

Tampilan setelah insert data - aplikasi Android akses database SQLite dengan Delphi XE 8

Tampilan saat entry data ke database :

InputQuery di aplikasi android untuk insert data ke databse sqlite - delphi xe 8

Tutorial di atas memang panjang, tapi jika Anda sudah terbiasa saya yakin Anda akan dengan cepat membuat aplikasi database di Android. Ohya, dalam buku saya ‘Membangun Aplikasi Android dengan Delphi XE 8”, saya tulis contoh-contoh lain dalam mengakses database SQLite di Android. Dalam buku ini saya jelaskan pula cara cepat bikin aplikasi database di Android, bagaimana mengakses field di tabel dengan cara yang lebih efisien, bagaimana bekerja dengan dua field atau lebih dalam satu tabel, bagaimana menampilkan data dengan dbGrid dan dBNavigator, bagaimana me-manage database SQLite dengan tampilan visual (SQLite Manager), dll. Pokoknya banyak, dah :). Silahkan pesan sebelum kehabisan 🙂 [AdSense-A]

0 0 votes
Article Rating

Leave a Reply

33 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
fariz wijayanto

Saya mau tanya tentang query agak melenceng2 dari pembahasan gpp kan…

Misal saya punya tabel dengan nama coba
Kode Nama barang
1001a a
1020b b
1012a c
1005c d
1152b e
1011c f

Nah saya mau ambil query dari tabel diatas dengan urutan kode dari kode 1001a sampai 1011c
Itu codingnya bagaimana ? Mohon bantuannya

select * from coba
????

gio

mas ajie ini untuk mysql bisa g ?

Arief

sory mas2 saya ikut nimbrung..
ini yang saya mau tau juga nih mas ajie..
saya coba buat aplikasi view dengan database mysql yang sudah di upload ke freehosting gitu..
tapi pas di compile dalam bentuk apk, ada pesan error “[DCC Fatal Error] Unit1.pas(17): F2613 Unit ‘FireDAC.Phys.MySQL’ not found.”
tapi kalo di compile ke exe ga ada masalah..
itu knp ya mas?
terimakasih..

Ihsan

Mas ajie.. Saya nyobain pake cara di atas, ga ada yg kelewat. Tapi pas instal di android, malah blank item.. Itu kenapa ya mas? Oh iya satu lagi, ada tampilan di delphi saya yang ga ada di tutorial di atas. Yaitu pas add file sqlite nya, muncul beragam pilihan driver engine. Saya ga pilih apa apa, cuma klik ok saja. Mohon pencerahan nya.. Nuhun mas..

andy

mas ajie boleh minta contoh skrip multi user login menggunakan sqlite, soalnya yang punya saya salah terus.

jajang sufyan

maaf mas ajie menggangu saya udah nyobain pake cara diatas setelah saya instal ke android tapi blank kira2 harus bagaimana pencerahannya.
sebelumnya ucapkan terimakasih atas pencerahannya

ed

kita bisa nggak pakai mysql bukan sqlite? apa caranya sama

Dika

menampilkan MENU pada aplikasi android yg dibuat pakai xe8??

Rizal

Assalamualaikum. .
maaf mas ajie mengganggu waktunya, gimana caranya untuk mengirim lewat email data yang telah disimpan di database di internal device android?
sebelumnya saya ucapkan terimakasih

yanto

mas ajie untuk koneksi yang mas ajie jelaskan di atas untuk koneksi dengan mysql dengan menggunakan teknologi client server bisa mas ajie bantu gimana caranya? karena saya sudah coba berapa kali gagal…

saiful

mas….kalau saya ada database di hosting, trus mau diakses dengan andoridnya gimana ya?
karena jelas tidak mungkin bisa dengan cara diatas.trims

iibasarah

mantap artikelnya. sedang mencari info tentang bangun app android menggunakan Delphi. soalnya dah cukup ngelotok pake delphi cm khawatir kl terbentur referensi dan fitur atau lib dari delphinya ketika appnya semakin kompleks. mohon sarannya bro…

daksa

mantap mas ajie..keren, saya coba dan berhasil

mau tanya mas..
kalau nanti hasil databasenya yang sudah terinput di android, lalu kita ambil file databasenya apa bisa? kita buka via editor di SQLLiteDatabaseBrowser yang ada di windows misalnya, soalnya saya cari file database latihan.s3db kok tidak ketemu ya mas

daksa

dimana mas biasanya? soalnya saya ingin file SQLLite kita update datanya via windows lalu kita copykan kan android dan datanya terupdate sesuai yang kita injectkan di windows, mohon pencerahannya mas ajie

Surani

untuk membuat Listview lebis dari 1 kolom bagaimana? saya pake XE8

Umam

buku nya “Membangun Aplikasi Android dengan Delphi XE 8” masih ada?

Nirwansah

Punya saya FDQueryInsert sama FDQuery1 kok gak kedeteksi waktu dimasukin didalem procedure OnInputQuery_Close?

33
0
Would love your thoughts, please comment.x
()
x