Aplikasi Android dengan Pre-built Database Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

dokumen-dokumen yang mirip
Menggunakan Database di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

Program Database Sederhana di Android Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.

UNIVERSITAS KOMPUTER INDONESIA

Membuat Simple List Transaksi

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

Pertemuan 7. Create, Read, Update, Delete Pada SQL Lite (Tampilan)

PRAKTIKUM IX:TUTORIAL PEMBUATAN

Custom Button pada Android Februari 2012 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse

main activity resource layout

Bab 4 Hasil dan Pembahasan

BAB IV TESTING DAN IMPLEMENTASI SISTEM

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pengenalan JavaScript

Membuat Alert Dialog Pada Android

LAMPIRAN. 1. Konsultasi.java. package com.example.saksermu.dentalexsys;

BAB IV IMPLEMENTASI DAN PENGUJIAN

Tutorial Membuat Aplikasi Web View Android pada Eclipse

MODUL 14 INTERKONEKSI CLIENT-SERVER ANDROID

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

Membuat JSP dan Servlet Sederhana

Cara Membaca File Text di JAVA

Membuat project Android di Eclipse Struktur project pada eclipse Mengenal Tag Layout User Interface

Modul Pengembangan Aplikasi Android Berbasis Client- Server Aplikasi sederhana android Versi 1.0

E-trik Ajax. Database MySQL. Dedi Alnas

Struktur & Pemakaian Teknologi Game Struktur Project Android

Location Based Services

Pembuatan Aplikasi Android Sederhana dengan Eclipse

Praktikum I Pengenalan Android

Topik. Stream I/O Cara menggunakan Stream Hierarchy Java I/O Membaca File Menulis File Menghapus File Cara membaca isi Direktori dalam file

Badiyanto, S.Kom., M.Kom. PBO java

visit :

[Pemrograman Android Dasar 02][Level: Pemula] Andi Taru Nugroho Nur Wismono S.Kom.,M.Cs. Lisensi Dokumen:

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming)

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

ARTIKEL TUGAS AKHIR TUTORIAL APLIKASI RUMUS-RUMUS FISIKA LISTRIK DINAMIS DASAR BERBASIS ANDROID

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

Ijin Akses Agar program kita dapat mengakses GPS, kita harus menambahkan permission pada AndroidManifest.xml sebagai berikut:

Membuat Tab Layout Menggunakan Android Material Design

LAMPIRAN A. Universitas Sumatera Utara

BAB IV IMPLEMENTASI DAN PENGUJIAN

DAFTAR PUSTAKA. Rizky, Soetam KONSEP DASAR REKAYASA PERANGKAT LUNAK {Software Reeingeenering}. Jakarta. PT.Prestasi Pustakarya.

UNIVERSITAS KOMPUTER INDONESIA

Membuat Aplikasi Berbasis Web Di Device Android Mobile

PEMROGRAMAN MOBILE PRAKTIKUM 11 ( DATABASE II ) Disusun oleh : CYNTHIA STEFFI CLIFF SI 12 A

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

Tahap Instalasi PostgreSQL di Windows

Didalam menampilkan peta yang sudah kita buat, kita akan menggunakan Slick2D sebagai sebuah frameworknya.

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

LAYOUT MENU UTAMA. <Button android:text="zakat Profesi" android:layout_width="wrap_content"

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

2 TIPE DATA DAN VARIABEL

Call Phone Permission pada Android

Praktikum 1 - Getting Started with Android

PRAKTIKUM 8 FILE INPUT OUTPUT

Latihan 2 List Menu Bertingkat

M.Octaviano Pratama

Praktikum IX Drag and Drop GUI dan Image Gallery

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

BAB II VARIABEL DAN TIPE DATA

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB III PEMBAHASAN 3.1 Analisa Sistem

Koneksi Java GUI-Database

Elemen Dasar Dalam Bahasa Java

INTRODUCTION TO ANDROID MOBILE APP DEVELOPMENT MUHAMMAD BAGIR., MTI

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

BAHASA PEMROGRAMAN JAVA

Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

Menulis Aplikasi untuk Android Bagian I

BAB 10 NETBEANS DATABASE

Mei 2006 Oleh : Feri Djuandi.

Workshop Struktur dan Pemakaian Teknologi Game BAB 4. Menu

BAB IV HASIL PENELITIAN DAN PEMBAHASAN. kosa kata dan arti kata adalah aplikasi kamus mobile di Android, karena mudah

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

Persiapan Sebelum mengikuti tutorial ini, ada baiknya pembaca telah membaca beberapa tutorial sebagai berikut:

Praktikum XIV Aplikasi dengan Database SQLite

Latihan 1 Menghitung Luas Persegi Panjang

Penggunaan Netbeans IDE, Hello World, variable dan Operator aritmetika.

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Achmad Solichin

Gambar Tampilan aplikasi Database Android 2

Pengenalan Script. Definisi HTML

BONUS. Dasar Java Mobile. Mengenal Java Mobile Mengenal MIDlet Mobile Grafis Mobile Animasi Latihan Soal

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

UNIVERSITAS KOMPUTER INDONESIA

MODUL PRAKTIKUM BASIS DATA TEKNIK INFORMATIKA UIN SUNAN KALIJAGA YOGYAKARTA 2011 PENGENALAN DATABASE MYSQL

BAB Argument Command-Line dan System Properties

DAFTAR PUSTAKA. A. S., R., & Shalahuddin, M. (2013). Rekayasa Perangkat Lunak Terstruktur dan Berorientasi Objek. Bandung: Informatika.

BAB IV IMPLEMENTASI DAN PENGUJIAN

DAPATKAN SEGERAA!!!!! PERSEDIAAN TERBATASS!

Menampilkan Map. B. Menambahkan referensi library google-play-service.jar ke dalam project

Pengenalan APLIKASI DATABASE

Membuat Data Mahasiswa dengan Java Netbeans dan SQLite

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

MOBILE PROGRAMMING. Oleh : CHALIFA CHAZAR

Transkripsi:

Aplikasi Android dengan Pre-built Database Desember 2011 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : Android 2.3, Eclipse, SQLite Pembahasan database pada aplikasi Android selama ini mengasumsikan database SQLite belum terbentuk atau tidak disertakan di dalam program sehingga database akan dibuat pada saat aplikasi pertama kali dijalankan. Pada kondisi tersebut database dalam keadaan kosong (tidak mengandung data apapun), kecuali hanya terdiri dari sebuah atau beberapa table yang dibuat bersamaan dengan database tersebut menggunakan perintah CREATE. Bagaimana seandainya programmer hendak mendistribusikan sebuah aplikasi Android yang mengandung database dengan data yang telah dipersiapkan? Mungkinkah sebuah aplikasi Android menyertakan prebuilt database di dalam paket instalasinya? Dengan semakin berkembangnya penggunaan perangkat Android dalam aplikasi bisnis maka ada banyak sekali kebutuhan dari hal ini, misalnya untuk memuat daftar produk dan harga pada aplikasi penjualan, daftar rekanan bengkel dan alamat pada aplikasi klaim asuransi, simulasi kredit pada aplikasi pembiayaan, daftar produk dan premi asuransi pada aplikasi ilustrasi dan penerapan-penerapan lainnya yang semuanya itu membutuhkan database berisi data yang sudah disiapkan sebelumnya. Artikel ini akan menjelaskan konsep dan teknik dasar pembuatan pre-built database, mengemasnya di dalam aplikasi serta penggunaannya saat aplikasi dijalankan. Semoga uraian ini menjadi topik yang menarik bagi Anda. Langkah pertama tentunya mempersiapkan pre-built database itu sendiri, yang umumnya menggunakan sebuah database management tool yang akan membantu programmer dalam mempersiapkan sebuah database SQLite. Dengan bantuan Google seorang programmer dapat dengan mudah menemukan beberapa database manager untuk SQLite, namun salah satu yang cukup populer adalah SQLite Manager. Program SQLite Manager berbentuk add-on yang diinstal pada program Mozilla Firefox, oleh karena itu harus dipastikan program browser tersebut telah terinstal sebelumnya pada komputer Anda. SQLite Manager adalah program yang sangat sederhana dan praktis, namun bisa memenuhi hampir semua keperluan programmer. Ia memiliki menu untuk membuat database, table, index, view dan trigger; serta sebuah kotak untuk menulis dan menjalankan perintah SQL. Sebuah program yang cukup lengkap dan mudah digunakan. Program SQLite Manager dapat dunduh secara gratis pada alamat berikut ini: https://addons.mozilla.org/id/firefox/addon/sqlite-manager/ Pada uraian ini akan digunakan sebuah contoh database yang memuat data produk seperti yang digunakan pada aplikasi penjualan. Anggaplah bahwa Anda sedang mempersiapkan sebuah daftar produk dari sebuah perusahaan, kemudian data ini akan digunakan oleh para pemasar melalui smartphone Android-nya dan aplikasi yang Anda kembangkan. - 1 -

1. Jalankan SQLite Manager menggunakan program Mozilla Firefox melalui menu Tools SQLite Manager. 2. Jalankan menu Database New Database untuk membuat sebuah database SQLite baru yang bernama productdemo.sqlite. Anda bebas untuk menempatkan file databasenya pada folder manapun di dalam komputer. 3. Pada tab Execute SQL, ketikkan perintah berikut ini untuk membuat sebuah table bernama productlist. CREATE TABLE productlist ( _id INTEGER PRIMARY KEY AUTOINCREMENT, prodcategory TEXT, prodname TEXT, ccy TEXT, unitprice FLOAT ); Jalankan perintah tersebut dengan menekan tombol Run SQL. Pastikan table itu telah terbentuk tanpa pesan kesalahan. - 2 -

CATATAN: Berikut ini adalah tipe-tipe data yang didukung oleh SQLite: - 3 -

4. Masukkan beberapa baris data ke dalam table tersebut dengan perintah INSERT seperti berikut ini. INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Book','O Little Town','USD',11.5); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Book','A Dixie Christmas','USD',9.95); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Book','The Adventures and the Memoirs of Sherlock Holmes','USD',9.95); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Book','The Hunger Games','USD',23.36); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Electronic','Apple ipod touch 32GB','USD',264.99); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Electronic','Garmin nüvi 1490LMT 5-Inch','USD',349.99); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Computer','Kindle Fire, Full Color 7" Multi-touch Display, Wi-Fi','USD',199.00 ); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Computer','Apple MacBook Pro MD318LL/A 15.4- Inch','USD',1709.88 ); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Computer','HP TouchPad Wi-Fi 32 GB 9.7','USD',280.99 ); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Software','Kaspersky Internet Security','USD',79.95); INSERT INTO productlist (prodcategory, prodname, ccy, unitprice) VALUES('Software','Microsoft Office Home & Student 2010','USD',149.99); Pindah ke tab Browse and Search untuk melihat isi dari table tersebut (pastikan table productlist telah disorot). - 4 -

Untuk sementara pre-built database telah selesai dibuat. Tahap berikutnya adalah membuat sebuah aplikasi Android yang akan menggunakan database tersebut. 1. Jalankan Eclipse dan buat sebuah Android Project baru. 2. Buat sebuah class baru bernama DBAdapter dengan kode program di bawah ini. Anda tidak perlu mengetikkan sendiri kode program itu karena program selengkapnya bisa diunduh dari situs web dimana artikel ini berasal. Class ini dibuat untuk menempatkan sub-program yang menangani operasi-operasi database seperti pembuatan table, pengisian data, perubahan data, penghapusan data dan pemanggilan data. 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 class DBAdapter ini. - 5 -

package net.houseoflife.dbsample; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import android.content.context; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteexception; import android.database.sqlite.sqliteopenhelper; public class DBAdapter { private static final String DATABASE_PATH="/data/data/net.houseoflife.dbsample/databases/"; private static final String DATABASE_NAME="productdemo.sqlite"; private static final int DATABASE_VERSION=1; 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) { //do nothing. The event is handled by the "preparedatabase" method. @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { //do nothing. The event is handled by the "preparedatabase" method. public DBAdapter open() throws SQLException { db = dbhelper.getwritabledatabase(); //or getreadabledatabase() for read only access return this; - 6 -

public void close() { dbhelper.close(); private boolean checkdatabase() { SQLiteDatabase checkdb = null; try { checkdb = SQLiteDatabase.openDatabase(DATABASE_PATH + DATABASE_NAME, null, SQLiteDatabase.OPEN_READONLY); catch (SQLiteException ex) { //Database does not exist yet if(checkdb!= null) checkdb.close(); return checkdb!= null? true : false; private void copydatabase() throws IOException { //get the SQLite database in the "assets" folder InputStream input = context.getassets().open(database_name); //copy to the device path OutputStream output = new FileOutputStream(DATABASE_PATH + DATABASE_NAME); byte[] buffer = new byte[1024]; int length; while ((length = input.read(buffer))>0) output.write(buffer,0,length); output.flush(); output.close(); input.close(); public void preparedatabase() { if(this.checkdatabase()) { //do nothing. The database already exists else { try { this.copydatabase() ; catch (IOException ex) { throw new Error ("Error copying database"); - 7 -

Untuk mempermudah pemahaman kerja dari sub-program ini, silakan memulainya dari method preparedatabase. Saat method ini dipanggil ia akan menjalankan method lain yang bernama checkdatabase. Fungsi method checkdatabase cukup jelas, yaitu ia memeriksa keberadaan file database yang diwakili oleh konstanta DATABASE_PATH + DATABASE_NAME (dalam hal ini adalah "/data/data/net.houseoflife.dbsample/databases/productdemo.sqlite"). Ini adalah lokasi dan nama file database SQLite yang mestinya ada di dalam perangkat Android, namun ada kemungkinan file itu tidak ada di sana jika aplikasi ini dijalankan pertama kali. Jika file itu belum ada maka fungsi opendatabase akan memicu sebuah error, itu sebabnya pemanggilan fungsi ini harus ada di dalam blok try-catch supaya program tidak berhenti. Saat terjadi error, maka method checkdatabase akan mengembalikan nilai FALSE yang artinya adalah file database tidak ada di dalam perangkat. Saat nilai yang dikembalikan adalah FALSE maka baris program selanjutnya akan memanggil method copydatabase yang akan berusaha menyalin file database yang ada di dalam folder aplikasi (yaitu folder assets) ke dalam perangkat Android. Perhatikan baik-baik beberapa potongan kode program berikut ini karena itu adalah bagian terpenting dari uraian ini. InputStream input = context.getassets().open(database_name);... OutputStream output = new FileOutputStream(DATABASE_PATH + DATABASE_NAME);... byte[] buffer = new byte[1024]; int length; while ((length = input.read(buffer))>0) output.write(buffer,0,length); Program mempersiapkan sumber penyalinan data, yaitu file database yang diwakili oleh konstanta DATABASE_NAME. Fungsi getassets digunakan untuk mencari file tersebut di dalam folder assets. Program mempersiapkan target penyalinan data, yaitu ke dalam perangkat Android yang lokasinya diwakili oleh DATABASE_PATH + DATABASE_NAME. Data dari file database dibaca sepotong demi sepotong (besar sebuah potongan adalah 1024 byte) menggunakan fungsi read kemudian ditulis dengan fungsi write. - 8 -

3. Buka class MainActivity, dan tambahkan kode program berikut ini. package net.houseoflife.dbsample; import android.app.activity; import android.database.cursor; import android.database.sqlexception; import android.os.bundle; import android.widget.toast; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBAdapter db = new DBAdapter(this); db.preparedatabase(); try { db.open(); //read the data Cursor c = db.getallproducts(); if (c.movetofirst()) { do { Toast.makeText(MainActivity.this, c.getstring(0) + "; " + c.getstring(1) + "; " + c.getstring(2) + " " + c.getfloat(3), Toast.LENGTH_SHORT).show(); while (c.movetonext()); else Toast.makeText(MainActivity.this, "No data", Toast.LENGTH_SHORT).show(); db.close(); catch (SQLException sqle) { Toast.makeText(this, sqle.getmessage(), Toast.LENGTH_SHORT).show(); - 9 -

4. Sebagai langkah terakhir, ada satu hal lagi yang harus dipersiapkan yaitu menyalin file database pre-built productdemo.sqlite yang telah dipersiapkan pada langkah awal tadi ke dalam folder projek - tepatnya ke dalam folder assets seperti diperlihatkan pada gambar di bawah ini. Pastikan nama file itu muncul pada Package Explorer di dalam Eclipse. Refresh folder assets jika file tersebut belum tampak. Setelah langkah terakhir ini selesai dilakukan, silakan menjalankan aplikasi tersebut. - 10 -

Saat aplikasi itu dieksekusi, tampak data-data yang ada di dalam database ditampilkan secara bergantian. Bila ini yang terjadi, maka bisa dipastikan program telah berjalan dengan baik. Mari kita telaah lebih jauh apa yang telah dilakukan oleh program ini. 1. Pada Eclipse, jalankan menu Windows Open Perspective DDMS. 2. Pada File Explorer, buka folder data/data/<namespace>/databases. Pada contoh ini namespace adalah net.houseoflife.dbsample. Perhatikan path ini adalah sama dengan nilai konstanta DATABASE_PATH pada kode program yang ditunjukkan tadi. Path ini menyatakan lokasi file database di dalam perangkat Android. Apakah Anda menemukan file productdemo.sqlite di dalam lokasi tersebut? Jika ya, maka method copydatabase yang dijelaskan tadi telah bekerja dengan baik. Ia berhasil menyalin file dari folder assets ke dalam lokasi ini seperti yang diharapkan. - 11 -

Sekarang kita akan melakukan beberapa pengujian akhir. Hapus file productdemo.sqlite yang ada di dalam perangkat Android dengan tombol bertanda minus merah seperti ditunjukkan pada gambar tadi. Jalankan kembali aplikasi tersebut. Apakah aplikasi itu masih bekerja normal menampilkan data-datanya? Saat kembali ke DDMS perspective apakah file productdemo.sqlite terbentuk kembali? Mari kita lakukan pengujian yang ke-dua. Hapus file database productdemo.sqlite yang ada di dalam folder assets kemudian jalankan kembali aplikasi tersebut. Apakah aplikasi itu masih bekerja normal menampilkan data-datanya? Setelah database ada di dalam perangkat Android, apakah aplikasi masih membutuhkan file yang ada di dalam folder assets? Semoga Anda bisa menjelaskan jawaban pertanyaan-pertanyaan di atas untuk memastikan Anda memahami konsep yang telah dijelaskan dengan panjang-lebar ini. Sumber: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-androidapplications/ - 12 -