www.tobuku.com
Menggunakan Database di Android Tingkat:
Desember 2011 Oleh : Feri Djuandi Platform
√ Pemula
Menengah
Mahir
: Android 2.3, Eclipse, SQLite
Dengan semakin beragamnya pengembangan berbagai aplikasi di platform Android dewasa ini, beberapa aplikasi mulai berkembang semakin kompleks dan membutuhkan media penyimpanan informasi dalam bentuk database terstruktur. Para programmer Android sangat beruntung karena Android menyediakan sebuah database yang secara default sudah ada di dalam library Android, yaitu SQLite. Untuk keperluan operasi database pada smartphone atau tablet Android, SQLite sangat memadai karena ukurannya yang kecil, cepat dan ringan dalam hal sumber daya. Karena sifatnya sebagai embedded database, SQLite tidak memiliki server namun bentuknya adalah library yang akan dipanggil saat program dijalankan. Seperti halnya database pada umumnya, SQLite memiliki objek-objek seperti table, view dan index. Perintah-perintah SQL-nya pun sangat mirip seperti yang biasa digunakan yaitu SELECT, INSERT, UPDATE, DELETE dan sebagainya. Informasi mengenai SQLite dapat dibaca secara lengkap pada situs resminya di: http://www.sqlite.org CATATAN: Untuk mulai mengembangkan aplikasi Android menggunakan SQLite, tidak ada instalasi tambahan yang perlu dilakukan karena library SQLite sudah ada di dalam framework Android. Database SQLite diaktifkan di dalam program dengan cara meng-import library SQLite pada program header, misalnya: import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;
Pada umumnya aplikasi dengan embedded database tidak menyertakan database yang sudah berbentuk pada saat aplikasi itu diinstal pada perangkat. Jadi yang diinstal hanya programnya, sedangkan databasenya tidak ada sama sekali. Database akan dibuat pada saat aplikasi itu dijalankan pertama kali, yaitu program akan memeriksa apakah database ditemukan. Jika database tidak ditemukan maka serangkaian perintah SQL akan menjalankan perintah CREATE yang akan membentuk file database diikuti dengan table-table di dalamnya. Tentunya programmer harus membuat sendiri perintah SQL tersebut secara spesifik tergantung struktur data di dalam aplikasi yang dibuatnya. Ini adalah teknik yang biasanya digunakan programmer dalam membuat sebuah aplikasi dengan embedded database dimana ia tidak menyertakan file database di dalam paket instalasi aplikasi. Berikut ini diperlihatkan sebuah contoh program menggunakan SQLite.
-1-
www.tobuku.com 1. Jalankan program Eclipse dan buat sebuah Android Project baru.
2. Beri nama pada projek tersebut, kemudian masukkan pilihan build target dan lengkapi property seperti ditunjukkan pada gambar di bawah ini.
Tekan Finish untuk melanjutkan.
-2-
www.tobuku.com Dari beberapa literatur yang saya baca, praktek yang dianjurkan untuk membuat program database adalah memisahkan antara program utama dengan program yang menangani perintah-perintah operasi database seperti membuat table, menambah baris, mengubah data dan sebagainya. Tujuannya adalah tidak mencampur-adukkan logika bisnis dengan operasi tingkat rendah (SELECT, INSERT, UPDATE dan DELETE) yang akan membuat kode program sulit dibaca dan berkesan rumit sekali. Untuk tujuan kerapihan program, akan jauh lebih baik jika program utama fokus hanya pada jalannya alur program utama, sementara fungsi-fungsi database dipisahkan ke dalam program yang lain. Program utama cukup memanggil fungsi-fungsinya secara sederhana dengan satu baris perintah saja, walaupun sebetulnya fungsi itu ditulis dengan baris yang panjang dan proses yang rumit di bagian program yang lain. Kita akan menerapkan teknik pemrograman tersebut dengan membuat sebuah class bernama DBAdapter yang khusus menangani operasi database. 3. Tambahkan sebuah class baru dan beri nama DBAdapter.
Tekan Finish untuk melanjutkan.
-3-
www.tobuku.com 4. Tambahkan perintah import berikut ini pada program header DBAdapter.java. Perhatikan beberapa library SQLite yang akan digunakan disebutkan di situ. ... import import import import import import import ...
android.content.ContentValues; android.content.Context; android.database.Cursor; android.database.SQLException; android.database.sqlite.SQLiteDatabase; android.database.sqlite.SQLiteOpenHelper; android.util.Log;
5. Ketikkan skrip berikut ini di dalam class DBAdapter. Perhatikan class ini mengandung sebuah constructor DBAdapter(Context) untuk menginisiasi class, kemudian method open dan close masing-masing untuk membuka dan menutup database. public class DbAdapter { private static final String TAG="DbAdapter"; private static final String DATABASE_NAME="books"; private static final int DATABASE_VERSION=1; private static final String TABLE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null)"; private static final String TABLE_DROP = "DROP TABLE IF EXISTS titles"; private final Context context; private DatabaseHelper dbHelper; private SQLiteDatabase db; public DbAdapter(Context ctx) { this.context = ctx; dbHelper = new DatabaseHelper(this.context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL(TABLE_DROP); onCreate(db); } } public DbAdapter open() throws SQLException { db = dbHelper.getWritableDatabase(); return this; } public void close() { dbHelper.close(); } }
-4-
www.tobuku.com Skrip di atas merupakan contoh program DBAdapter yang relatif generik. Program ini bisa dijadikan semacam cetakan untuk program-program lain karena program ini bentuknya masih umum dan belum mengandung fungsi-fungsi yang spesifik. Konstantakonstanta seperti DATABASE_NAME, TABLE_CREATE, TABLE_DROP bisa diubah isinya untuk disesuaikan dengan kebutuhan. Nantinya ke dalam program DBAdapter ini harus ditambahkan fungsi-fungsi database misalnya insertBook, updateBook dan sebagainya dengan baris-baris kode yang spesifik. 6. Sampai tahap ini jalankan aplikasi tersebut untuk menguji-coba dengan cara klik-kanan nama pada projek di dalam Package Explorer, kemudian pilih Run As Android Application.
Tunggu sejenak sampai emulator Android ditampilkan dan menjalankan aplikasi ini. Sepintas Anda tidak akan melihat sesuatu yang istimewa pada tampilan aplikasi tersebut, kecuali sebuah pesan yang muncul pada emulator.
Sesungguh aplikasi ini menjalankan sesuatu yang istimewa saat ia dijalankan pertama kali. Perhatikan potongan-potongan program berikut ini.
-5-
www.tobuku.com
MainActivity.java
DBAdapter.java
DBAdapter db = new DBAdapter(this);
public DBAdapter(Context ctx) { this.context = ctx; dbHelper = new DatabaseHelper this.context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE); } private static final String TABLE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null)";
Saat MainActivity.java membuat objek DBAdapter dengan di dalam baris “DBAdapter db = new DBAdapter(this);” maka rangkaian pemanggilan baris-baris program lainnya akan dijalankan seperti diperlihatkan pada gambar di atas, seperti pembuatan objek DatabaseHelper dan pemanggilan method super, onCreate dan terakhir yang berujung pada dijalankannya method execSQL untuk membuat sebuah table bernama titles. Tanpa disadari sebuah file database bernama books dengan sebuah table titles di dalamnya telah terbentuk. Lalu sekarang bagaimana memastikan database ini telah terbentuk? Satusatunya cara tentunya harus menemukan bahwa file database itu memang ada, bukan? 1. Jalankan menu Window Open Perpective perpective pada sudut kanan-atas layar.
-6-
DDMS atau cukup meng-klik icon DDMS
www.tobuku.com 2. Pada tab File Explorer, buka folder data
data.
3. Cari nama package dari projek ini (pada contoh ini adalah net.houseoflife.dbsample), kemudian buka foldernya hingga ditemukan folder databases dan sebuah file database di dalamnya. Itu adalah file database SQLite yang dibentuk oleh aplikasi tersebut.
File database SQLite yang tampak pada File Explorer perlu dibuka untuk memastikan sebuah table telah terbentuk di dalamnya. Database itu tidak dapat langsung dibuka di dalam Eclipse tetapi harus dibuka menggunakan sebuah program yang bernama SQLite Manager. Program ini akan dijelaskan kemudian, tetapi untuk saat ini file database ini harus dibawa keluar dari emulator agar bisa diakses dari komputer lokal. 1. Pastikan file database disorot/dipilih pada File Explorer, kemudian klik icon dengan tulisan “Pull a file from the device” pada sudut kanan-atas layar.
2. Simpan file tersebut pada komputer lokal.
-7-
www.tobuku.com SQLite Manager adalah sebuah program yang sangat membantu programmer dalam mengelola database SQLite seperti membuat table, index dan menjalankan perintah-perintah SQL. Program ini sangat mudah digunakan dan betul-betul bermanfaat untuk berbagai keperluan praktis. Satu hal lagi yang tidak kalah pentingnya: program ini gratis. Selain SQLite Manager, ada beberapa program lain yang tujuannya serupa namun saya menganjurkan program ini karena ia yang paling populer digunakan saat ini. SQLite Manager adalah sebuah program add-on pada program Mozilla Firefox sehingga pastikan pada komputer Anda telah terinstal program browser tersebut sebelumnya. Untuk mengsinstal SQLite Manager, silakan mengunduh add-on-nya pada alamat berikut ini dan ikuti instruksinya. https://addons.mozilla.org/id/firefox/addon/sqlite-manager/ Saya tidak mengetahui apakah add-on SQLite Manager juga tersedia untuk browser yang lain seperti Internet Explorer atau Chrome, saya persilakan pembaca untuk mencarinya sendiri. Setelah add-on berhasil terinstal, jalankan program ini melalui Mozilla Firefox. 1. Jalankan menu Tools
SQLite Manager.
2. Setelah SQLite Manager muncul, jalankan menu Database Connect Database, kemudian buka file database yang telah tersimpan di dalam komputer lokal tadi. 3. Saat file database telah dibuka, perhatikan bahwa table titles tampak di dalamnya.
Silakan lihat isi table tersebut dengan menjalankan perintah SQL pada kotak Execute SQL. Demikianlah Anda telah melihat bagaimana aplikasi Android membuat sebuah database SQLite saat ia dijalankan. Jika aplikasi ini dijalankan lagi untuk ke-dua kali dan seterusnya, file database tidak akan dibuat lagi karena ia sudah ada. File database itu akan langsung dibuka dan digunakan oleh aplikasi yang bersangkutan.
-8-