Praktikum XIV Aplikasi dengan Database SQLite Pokok bahasan: Database SQLite Proses CrUD (Create, Update, Delete) Tujuan Belajar: Setelah mempelajari modul ini mahasiswa diharapkan mengetahui: Proses penyimpanan pada sqlite Membuat aplikasi menggunakan sqlite secara sederhana Teori Dasar SQLite database Android telah menyediakan suatu database yang disebut SQLite untuk menyimpan data dengan model basis data relasional. Aplikasi-aplikasi tertentu yang membutuhkan data secara terstruktur tentu akan sangat terbantu dengan adanya SQLite ini. Aplikasi yang biasanya menggunakan data yang terstruktur misalnya aplikasi kamus, buku telepon dan sebagainya. Sqlite merupakan lighweight database application yang cukup ideal untuk aplikasi mobile. Kelas-kelas yang terdapat di aplikasi yang menggunakan SQLite a. SQLite Database Merupakan kelas yang mempunyai metode seperti: Insert(), meambahkan baris ke database Update(), memperbarui baris pada database Delete(), menghapus baris pada database execsql(), untuk mengeksekusi sintak SQL b. SQLiteOpenHelper Merupakan sub kelas yang memiliki beberapa metode seperti: oncreate(), dijalankan jika sebelumnya belum tersedia database Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 1
onupgrade(), dijalankan jika sebelumnya sudah ditemukan database yang sama namun beda versi. Metode ini bisa digunakan untuk mengubah skema database. onopen(), dijalankan jika database sudah dalam keadaan terbuka getwritedatabase(), berfungsi untuk memanggil database agar bisa dimasuki data. getreadabledatabase(), berfungsi untuk memanggil database agar bisa membaca datanya. Cursor Cursor mempresentasikan hasil query yang dieksekusi pada baris dan kolom tertentu. Contoh di bawah merupakan ilustrasi mengenai kursor [Melly, Bekasi] Nama jarwo Kota Bekasi Tusam Jakarta Fitri Jogjakarta Metode yang digunakan pada praktikum ini antara lain: movetofirst(), pindah ke baris pertama isafterlast(), mengirim pesan balik jika posisi kursor sudah berada di baris terakhir. getlong(), untuk mengambil data pada kolom yang mempunyai tipe data long getstring(), untuk mengambil data pada kolom yang mempunyai tipe data string. Project pada modul ini adalah membuat aplikasi Android untuk memasukkan nama dan hobi ke dalam form android yang akan diisikan ke database. Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 2
mainactivity.java package com.datahobi; import java.util.arraylist; import com.db.satu.r; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.tablelayout; import android.widget.tablerow; import android.widget.textview; import android.widget.toast; public class MainActivity extends Activity { DatabaseManager dm; EditText nama, hobi; Button addbtn; TableLayout tabel4data;// tabel for data /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); dm = new DatabaseManager(this); tabel4data = (TableLayout) findviewbyid(r.id.tabel_data); nama = (EditText) findviewbyid(r.id.innama); hobi = (EditText) findviewbyid(r.id.inhobi); addbtn = (Button) findviewbyid(r.id.btnadd); addbtn.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { // TODO Auto-generated method stub simpandata(); ); updatetable(); protected void simpandata() { // TODO Auto-generated method stub try { Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 3
dm.tambahrow(nama.gettext().tostring(), hobi.gettext().tostring()); Toast.makeText(getBaseContext(), nama.gettext().tostring() + ", berhasil disimpan", Toast.LENGTH_SHORT).show(); updatetable(); kosongkanfield(); catch (Exception e) { // TODO Auto-generated catch block e.printstacktrace(); Toast.makeText(getBaseContext(), "gagal simpan, " + e.tostring(), Toast.LENGTH_LONG).show(); protected void kosongkanfield() { nama.settext(""); hobi.settext(""); protected void updatetable() { // TODO Auto-generated method stub while (tabel4data.getchildcount() > 1) { tabel4data.removeviewat(1); double aa = tabel4data.getchildcount(); String a = String.valueOf(aa); Toast.makeText(getBaseContext(), "tabel data child : " + a, Toast.LENGTH_SHORT).show(); ArrayList<ArrayList<Object>> data = dm.ambilsemuabaris();// for (int posisi = 0; posisi < data.size(); posisi++) { TableRow tabelbaris = new TableRow(this); ArrayList<Object> baris = data.get(posisi); TextView idtxt = new TextView(this); idtxt.settext(baris.get(0).tostring()); tabelbaris.addview(idtxt); TextView namatxt = new TextView(this); namatxt.settext(baris.get(1).tostring()); tabelbaris.addview(namatxt); TextView hobitxt = new TextView(this); hobitxt.settext(baris.get(2).tostring()); tabelbaris.addview(hobitxt); Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 4
tabel4data.addview(tabelbaris); Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 5
DatabaseManager,java package com.datahobi; import java.util.arraylist; import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.util.log; public class DatabaseManager { private static final String ROW_ID = "_id"; private static final String ROW_NAMA = "nama"; private static final String ROW_HOBI = "hobi"; private static final String NAMA_DB = "Databasehobi";// nama database private static final String NAMA_TABEL = "hobiku"; // nama tabel private static final int DB_VERSION =1; //CREATE TABLE hobiku (_id integer PRIMARY KEY autoincrement, nama text,hobi text) private static final String CREATE_TABLE = "create table "+NAMA_TABEL+" ("+ROW_ID+" integer PRIMARY KEY autoincrement, "+ROW_NAMA+" text,"+row_hobi+" text)"; private final Context context; private DatabaseOpenHelper dbhelper; private SQLiteDatabase db; public DatabaseManager(Context ctx) { this.context = ctx; dbhelper = new DatabaseOpenHelper(context); db = dbhelper.getwritabledatabase(); private static class DatabaseOpenHelper extends SQLiteOpenHelper { public DatabaseOpenHelper(Context context) { super(context, NAMA_DB, null, DB_VERSION); // TODO Auto-generated constructor stub @Override public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub db.execsql(create_table); Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 6
{ titles" @Override public void onupgrade(sqlitedatabase db, int oldver, int newver) // TODO Auto-generated method stub"drop TABLE IF EXISTS db.execsql("drop TABLE IF EXISTS "+NAMA_DB); oncreate(db); public void close() { dbhelper.close(); public void TambahRow(String nama, String hobi) { ContentValues values = new ContentValues(); values.put(row_nama, nama); values.put(row_hobi, hobi); try { // db.delete(nama_tabel, null, null); db.insert(nama_tabel, null, values); catch (Exception e) { Log.e("DB ERROR", e.tostring()); e.printstacktrace(); public ArrayList<ArrayList<Object>> ambilsemuabaris() { ArrayList<ArrayList<Object>> dataarray = new ArrayList<ArrayList<Object>>(); Cursor cur; try { cur = db.query(nama_tabel, new String[] { ROW_ID, ROW_NAMA, ROW_HOBI, null, null, null, null, null); cur.movetofirst(); if (!cur.isafterlast()) { do { ArrayList<Object> datalist = new ArrayList<Object>(); datalist.add(cur.getlong(0)); Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 7
datalist.add(cur.getstring(1)); datalist.add(cur.getstring(2)); dataarray.add(datalist); while (cur.movetonext()); catch (Exception e) { // TODO Auto-generated catch block e.printstacktrace(); Log.e("DEBE ERROR", e.tostring()); return dataarray; Tambahkan script pada string.xml menjadi seperti di bawah ini <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">masukkan nama dan hobi</string> <string name="app_name">database nama dan hobby</string> <string name="btnaddtxt">tambah Data</string> <string name="namalabel">nama</string> <string name="hobilabel">hobi</string> <string name="nomorlabel">no.</string> </resources> Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 8
Tambahkan script mainactivity layout menjadi seperti di bawah ini <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:text="@string/hello" /> <LinearLayout android:layout_width="match_parent" android:id="@+id/linearlayout1"> <EditText android:id="@+id/innama" android:layout_width="100dip"></edittext> <EditText android:id="@+id/inhobi" android:layout_width="100dip"></edittext> <Button android:layout_width="wrap_content" android:id="@+id/btnadd" android:text="@string/btnaddtxt"></button> </LinearLayout> <TableLayout android:layout_width="match_parent" android:id="@+id/tabel_data"> <TableRow android:id="@+id/tablerow1" android:layout_width="wrap_content" > <TextView android:layout_width="50dip" android:text="@string/nomorlabel" android:id="@+id/no_id"></textview> <TextView android:layout_width="100dip" android:text="@string/namalabel" android:id="@+id/nama_id"></textview> <TextView android:layout_width="100dip" android:text="@string/hobilabel" android:id="@+id/hobi_id"></textview> </TableRow> </TableLayout> </LinearLayout> Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 9
Jalankan aplikasi tersebut Data ditambah anto Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 10
Database dibuka dengan SQLite database Browser Modul Praktikum Pemrograman IV -adam_ab-2014 Hal 11