Android Database SQLite

Versi 1.0

1. Mengenal SQLite

Penyimpanan database internal pada aplikasi Android bisa dilakukan dengan SQLite. SQLite merupakan database management system yang populer untuk penyimpanan lokal / client pada aplikasi perangkat lunak. SQLite merupakan database engine yang paling banyak digunakan di dunia untuk keperluan seperti browser, sistem operasi, dan aplikasi mobile. SQLite pada aplikasi Android menyimpan data internal aplikasi itu sendiri, aplikasi lain tidak dapat menggunakannya.

2. Membuat Database SQLite

Database SQLite pada aplikasi Android dibuat dengan class anak (subclass) dari class SQLiteOpenHelper. Class tersebut menjadi class data access untuk database SQLite. Object dari class tersebut dapat digunakan oleh semua class lain yang mengakses database. Untuk membuatnya, kita buat class yang bernama Database yang menjadi subclass dari SQLiteOpenHelper sebagai berikut.
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;

public class Database extends SQLiteOpenHelper {

	private final static int DATABASE_VERSION = 1;
	private final static String DATABASE_NAME = "DIANDEV";
	private SQLiteDatabase DB;

	public Database(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		createTable(db);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}

	public void openWritable(){
		this.DB = getWritableDatabase();
	}

	public void openReadable(){
		this.DB = getReadableDatabase();
	}

	public void close(){
		this.DB.close();
	}

	public void createTable(SQLiteDatabase db){
                String sql = "CREATE TABLE IF NOT EXISTS person " +
				"(id INTEGER PRIMARY KEY, name TEXT)";
		db.execSQL(sql);
	}

	public long insertData(int id, String name) {
		ContentValues values = new ContentValues();
		values.put("id", id);
		values.put("name", name);
		return DB.insert("person", null, values);
	}

	public int updateData(int id, String name) {
		ContentValues values = new ContentValues();
		values.put("name", name);
		return DB.update("person", values, "id = " + id, null);
	}

	public int deleteData(int id) {
		return DB.delete("person", "id = " + id, null);
	}

	public ArrayList getPersonList() {
		Cursor cursor = DB.rawQuery(
				"SELECT * from person", null);
		ArrayList list = new ArrayList();
		cursor.moveToFirst();
		for (int i = 0; i < cursor.getCount(); i++) {
			list.add(cursor.getString(cursor.getColumnIndex("name")));
			cursor.moveToNext();
		}
		return list;
	}

}
Constuctor dari class tersebut mendefinisikan nama dan versi database. Nama database kita beri nama “DIANDEV” dan versi database adalah 1. Nama digunakan untuk memberikan penamaan database. Versi digunakan untuk memberikan nomor versi database yang digunakan dalam perubahan struktur database, misalnya penambahan tabel atau kolom pada database. Fungsi onCreate() dipanggil ketika ketika object dari class ini pertama kali dibuat dan akan memanggil fungsi createTable() yang berisi perintah untuk membuat tabel-tabel pada database. Fungsi onUpgrade() dipanggil ketika terjadi penambahan versi database yang berguna ketika kita ingin mengubah struktur database (penambahan atau perubahan tabel dan kolom).
Untuk mengakses database, maka kita perlu membuat tampilan (UI) dan class Activity pada project ini. Kita buat tampilan dengan file activity_main.xml  seperti berikut ini.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Android Database"
        android:layout_gravity="center_horizontal"
        android:textSize="24sp" />

    <ListView
        android:id="@+id/lv_person"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
Kita buat class MainActivity.java seperti berikut ini.
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Database data = new Database(this);
		data.openWritable();
		// mengambil data dari database
		ArrayList listData = data.getPersonList();
		// periksa apakah ada data, jika tidak ada akan dilakukan inisiasi data
		if(listData.size() < 1){

			// inisiasi data ke dalam database
			data.insertData(1,"Aji");
			data.insertData(2,"Tyas");
			data.insertData(3,"Cukli");
			data.insertData(4,"Paijo");
			data.insertData(5,"Bowo");
			data.insertData(6,"Mumuw");
			data.insertData(7,"Fatin");
			data.insertData(8,"Gibun");
			data.insertData(9,"Boim");
			data.insertData(10,"Limpat");

			listData = data.getPersonList();
		}
		data.close();

		ArrayAdapter adapter = new ArrayAdapter(this,
				android.R.layout.simple_list_item_1, listData);

		ListView listView = (ListView) findViewById(R.id.lv_person);
		listView.setAdapter(adapter);
	}
}
Pada class tersebut kita membuat object dari class Database yang bernama data. Pada class tersebut kita periksa apakah database telah terisi data, jika belum kita inisiasi data ke dalam database. Data dari database kita ambil dan ditampilkan pada ListView.
Kita jalankan project maka data-data dari database akan ditampilkan pada ListView seperti berikut ini.
1
Kita dapat merubah data yang ada di dalam database. Kita akan merubah data yang bernama “Aji” dengan id = 1 yang akan kita rubah namanya menjadi “Aji Setyo“. Untuk merubahnya, tambahkan code berikut ini ke dalam class MainActivity.java sebelum code data.close(). Jalankan project, maka “Aji” akan berubah menjadi “Aji Setyo” seperti berikut ini.
// perubahan data
data.updateData(1, "Aji Setyo");
listData = data.getPersonList();
2
Kita juga dapat menghapus data dari database. Kita akan merubah data yang bernama “Aji Setyo” dengan id = 1. Untuk menghapusnya, tambahkan code berikut ini sebelum code data.close(). Jalankan project, maka “Aji Setyo” tidak akan ada lagi pada list karena data tersebut telah dihapus dari database.
// penghapusan data
data.deleteData(1);
listData = data.getPersonList();
3

3. Download Project

Anda dapat mendownload file project dari tutorial ini di sini.

Jika ada yang belum jelas, silakan tanyakan pada form komentar, Ciao… 🙂

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s