Haaahhh, baru bisa posting lagi di hari minggu yang tumben sejuk seperti ini. Kali ini saya nangkring di Lab. Litbang kampus, koneksi internetnya cukup kencang lah. Pokoknya kalo dipake donlod, yang liat pasti ngiler deh :D. Berhubung di rumah TV saya sedang bermasalah, sekalian saja saya nonton TV online dengan koneksi kencang yang nganggur di kampus. Cukup lama juga saya tidak nonton acara TV, biasanya paling nangkringin laptop. Sambil nonton TV online, saya mau berbagi sedikit nih tentang tutorial android. Yupzzz, android. Semoga rekan-rekan gak bosan dengan postingan saya yang akhir-akhir ini membahas tentang android. Kali ini saya akan membahas tentang database SQLite,dimana database ini sudah tersedia langsung di dalam OS android.
Karena memang sama-sama SQL, querynya sama dengan database MySQL. Diawali dengan membuat database, membuat struktur tabel dan memanfaatkan adapter dari SQLiteDatabase untuk melakukan fungsi DML (Data Manipulation Language). Setelah itu, datanya akan ditampilkan ke dalam sebuah ListView dengan memanfaatkan CursorAdapter. Gak usah banyak penjelasan, kita langsung aja ke cara pembuatannya. Cekidot gan….
1. Buat android project baru seperti gambar di bawah ini :
2. Kita akan memanfaatkan SQLiteOpenHelper sebagai class yang berfungsi untuk menangani koneksi ke database. Diantaranya fungsi DDL (Data Definition Language) dan DML. Buat sebuah file class baru dengan nama DBHelper.java yang meng-extends class SQLiteOpenHelper.
public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context, "sekolah_db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { //db.execSQL(""); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //db.execSQL(""); onCreate(db); } public void tambah(SQLiteDatabase db) { String[] nama_sis = new String[] { "Gede", "Okky", "Untung", "Puji", "Willy", "Ayus" }; String[] alamat_sis = new String[] { "Denpasar", "Banyuwangi", "Situbondo", "Rogojampi", "Purwoharjo", "Rogojampi" }; int lanjut = new Random().nextInt(6); String nama_in = nama_sis[lanjut]; String alamat_in = alamat_sis[lanjut]; //db.execSQL(""); } }
Saya sisipkan sebuah function untuk melakukan input ke dalam tabel, value-nya saya acak dari beberapa string yang saya simpan di dalam sebuah array. Dan fungsi insert ini akan berjalan setiap kali aplikasi dibuka (taruh di event onCreate). Ouw yaw, itu ada syntax yang saya mark, querynya saya hilangkan karena tidak bisa disimpan ke dalam database blog ini :). Untuk melihat query-nya, silahkan donlod saja contoh programnya di akhir postingan ini.
3. Sekarang kita buat sebuah activity yang akan menampilkan data dari dalam database SQLite ke dalam sebuah ListView. Buka file SqliteToListviewActivity.java dan ketikkan code di bawah ini :
public class SqliteToListviewActivity extends ListActivity { private SQLiteDatabase db; private CursorAdapter data_sumber; private static final String kolom[] = {"nama", "alamat",BaseColumns._ID }; DBHelper helper = new DBHelper(this); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView view = getListView(); view.addHeaderView(getLayoutInflater().inflate(R.layout.row, null)); db = helper.getWritableDatabase(); this.muat_ulang(); this.tambahdata(); } public void muat_ulang() { Cursor data = db.query("bio_siswa", kolom, null, null, null, null,null); data_sumber = new SimpleCursorAdapter(this, R.layout.row, data, kolom,new int[] { R.id.nama, R.id.alamat }); setListAdapter(data_sumber); } public void tambahdata() { helper.tambah(db); this.muat_ulang(); } }
Untuk melakukan query untuk seleksi record dalam database, bisa menggunakan fungsi .rawquery() atau dengan .query(). Dan disini saya menggunakan fungsi .query() karena tidak perlu memasukkan perintah select SQL, .query() mirip dengan pattern active record di CI. Data dari database disimpan terlebih dahulu dalam CursorAdapter. Kemudian ditampilkan ke dalam ListView denga fungsi setListAdapter().
4. Yang terakhir, kita perlu membuat sebuah desain layout untuk menampung data-data dari database. Buat sebuah file layout baru (klik kanan folder layout > New > Android XML File) dan ketikkan kode layout di bawah ini :
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:id="@+id/layoutBaris" android:orientation="horizontal" android:layout_width="fill_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:id="@+id/nama" android:text="Nama" android:textSize="15sp" android:padding="10dip" /> <TextView android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_height="wrap_content" android:id="@+id/alamat" android:text="Alamat" android:gravity="right" android:textSize="15sp" android:padding="10dip" /> </RelativeLayout>
5. Tes aplikasi via emulator, kira-kira hasilnya seperti gambar di bawah ini :
Nah itu langkah-langkah dasar untuk membuat sebuah aplikasi database sederhana dengan memanfaatkan SQLite. Terus terang saja, ketika mencoba untuk membuat aplikasi ini sering mengalami forced close setiap akan mencobanya ke dalam emulatornya :(. Kebanyakan karena kesalahan mengisi parameter dari CursorAdapter dan SqliteOpenHelper nya. Setelah dicoba dan hampir putus asa, akhirnya bisa juga =)). OK deh, sekian dulu postingan saya di hari minggu yang sejuk ini. Semoga bisa bermanfaat untuk rekan-rekan.
Happy Blogging and Keep Coding
Cheerrrsss….!!!!
kok saya masih force close ya 🙁 mohon bantuannya 🙁
kaka,,,, mohon pencerahannya yah. kalo misal kita punya edit text bertipe double kemudian ingin membuat validasi edit text tersebut tidak kosong, kemudian muncul pesan alert “angka 1 masih kosong”. gmna yah kaka…
bro,ane bsa beli program gak?
mas/ mbak… kalo memasukan file gambar bagaimana dengan menggunakan DB sqlite atau mysql…. saya masih binggung… mohon pencerahannya…. suwun 🙂
gan,
tengkyu banget ya gan…
nice share
sip bro..
bang saya mau nanya, kalo mau nampilin data dari database mysql di android berupa pilihan ganda gmna ya caranya. Jadi nampilin Soal, dan pilihan jawabannya berupa pilihan ganda dari A-E….Terima Kasih sebelumnya, sukses selalu buat Gede lumbung
Ini juga gak bisa didownload gan, minta link lain dong ^_^
Mau tanya donk kalo cara bikin source code menampilkan perbandingan skore permainan barudengan yg lama itu bagaimana yah….?
Jika ada souce code ya mohon di kirim ke email saya anharfebryadi@rocketmail.com
ini errornya : java.lang.runtimeexception unable to start activity
kira2 dimana yah