SQLite adalah database yang bisa dibangun di android. SQLite memiliki fitur relasional database, hampir sama dengan SQL pada desktop hanya saja SQLite membutuhkan memori yang sedikit.

Implementasi Android SQLite Database di Eclipse PART 1
SQLite terdapat pada semua perangkat android, Kamu cukup mendefinisikan perintah SQL untuk meng-create atau meng-update database, selanjutnya system pda android akan menangani hal-hal yang berhubungan dengan database. SQLite database otomatis akan tersimpan didalam path data/data/nama_package/database/nama_database.
Sebelum mulai membuat aplikasi SQLite database, ada 3 kelas yang harus Kamu ketahui yaitu;
1. SQLiteDatabase
SQLiteDatabase merupakan kelas yang mempunyai method seperti
- Insert() untuk menambahkan baris ke database
- Update() untuk memperbarui baris pada database
- Delete() untuk menghapus baris pada database
- execSQL() untuk mengeksekusi sintak SQL
2. SQLiteOpenHelper
SQLiteOpenHelper adalah subclass yang memiliki beberapa method seperti
- onCreate() dijalankan jika sebelumnya belum ada database
- onUpgrade() dijalankan jika sebelumnya sudah ditemukan database yang sama namun beda versi. Method ini bisa dimanfaatkan untuk mengubah skema database.
- onOpen() dijalankan jika database sudah dalam keadaan open
- getWritableDatabase() memanggil database agar bisa dimasuki data
- getReadableDatabase() memanggil database agar bisa membaca datanya.
3. Cursor
Setiap query yang dieksekusi pasti membawa nilai kembalian atau feedback. Feedback yang dihasilkan query ini disebut cursor. Jadi dengan kata lain, cursor merepresentasikan hasil query yang dieksekusi pada baris dan kolom tertentu. Gambar 12.1 berikut ini akan membantu Kamu memahami istilah cursor pada SQLite.

Gambar 12.1. Analogi cursor pada SQLite database
Cursor diwakili dengan tKamu panah berada pada posisi baris ke 2 dengan membawa data [fitri,masak]. Berikut ini beberapa method yang digunakan dalam latihan ini;
- moveToFirst() untuk pindah ke baris pertama
- isAfterLast() akan mengirim pesan balik jika posisi cursor 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
4. Membuat Database Android di Eclipse
Sebelum mulai membuat project, ada baiknya kamu lihat dulu hasil akhir project Database Android #1 pada gambar 12.2
Kita akan membuat database hobi seseorang. Data dimasukkan melalui 2 buah edittext, kemudian tombol add dipakai untuk menyimpan data kedalam database sekaligus mengupdate tabel jika data berhasil disimpan.

Gambar 12.2 Android database #1
Sudah siap?? Mari kita praktekkan
1. Siapkan project baru dengan nama sebagai berikut
| Project name | DatabaseAndroid |
|-----------------|---------------------|
| Build Target | Android 2.2 |
| Aplication name | Database Android #1 |
| Package name | Com.db.satu |
| Create Activity | DatabaseAndroidSatu |
| Min SDK version | 8 |
2. Ubah baigan String.xml seperti berikut
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Masukkan nama dan hobi</string>
<string name="app_name">Database Android #1</string>
<string name="btnAddtxt">Add</string>
<string name="namaLabel">Nama</string>
<string name="hobiLabel">hobi</string>
<string name="nomorLabel">No.</string>
</resources>
3. Ubah main.xml seperti berikut 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:layout_height="wrap_content"
android:text="@string/hello" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1">
<EditText android:id="@+id/inNama"
android:layout_height="wrap_content"
android:layout_width="100dip"></EditText>
<EditText android:id="@+id/inHobi"
android:layout_height="wrap_content"
android:layout_width="100dip"></EditText>
<Button android:layout_width="wrap_content"
android:id="@+id/btnAdd"
android:layout_height="wrap_content"
android:text="@string/btnAddtxt"></Button>
</LinearLayout>
<TableLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/tabel_data">
<TableRow android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content"
android:layout_width="50dip"
android:text="@string/nomorLabel"
android:id="@+id/no_id"></TextView>
<TextView android:layout_height="wrap_content"
android:layout_width="100dip"
android:text="@string/namaLabel"
android:id="@+id/nama_id"></TextView>
<TextView android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="@string/hobiLabel"
android:id="@+id/hobi_id"></TextView>
</TableRow>
</TableLayout>
</LinearLayout>
4. Buat kelas baru kemudian beri nama DatabaseManager.java, setelah itu ketikkan baris kode berikut ini.
package com.db.satu;
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 = "DatabaseAndroidSatu";
private static final String NAMA_TABEL = "hobiku";
private static final int DB_VERSION = 1;
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);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+NAMA_DB);
onCreate(db);
}
}
public void close() {
dbHelper.close();
}
public void addRow(String nama, String hobi) {
ContentValues values = new ContentValues();
values.put(ROW_NAMA, nama);
values.put(ROW_HOBI, hobi);
try {
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();
(!cur.isAfterLast()) {
do {
ArrayList<Object> dataList = new ArrayList<Object>();
dataList.add(cur.getLong(0));
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;
}
}
5. Nah sekarang kita menambahkan kode di activity DatabaseAndroidSatu.java seperti dibawah ini
package com.db.satu;
import java.util.ArrayList;
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 DatabaseAndroidSatu 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) {
simpKamuta();
}
});
updateTable();
}
protected void simpKamuta() {
try {
dm.addRow(nama.getText().toString(),hobi.getText().toString());
Toast.makeText(getBaseContext(),
nama.getText().toString() + ", berhasil disimpan",
Toast.LENGTH_SHORT).show();
updateTable();
kosongkanField();
} catch (Exception e) {
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);
}
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);
tabel4data.addView(tabelBaris);
}
}
}
Jika tidak ada error, maka aplikasi AndroidDatabaseSatu siap dijalankan
Penjelasan Program
Pada project database kita mempunyai kelas java DatabaseManager.java (bukan activity). Kelas ini terdiri dari;
- Deklarasi variable pada baris 14-26
- Constructor DatabaseManager pada baris 28-32
- subClass DatabaseOpenHelper pada baris 34-54
- Method close pada baris 55-57
- Method addRow pada baris 59-69
- Method ambilSemuaBaris pada baris 71-94
Didalam cuntructor DatabaseManager, kita mendefinisikan subclass DatabaseOpenHelper dan menaruh method getWritableDatabase sehingga ketika project ini dijalankan database langsung diset agar bisa ditulisi data.
Subclass DatabaseOpenHelper juga memiliki cuntroctor DatabaseOpenHelper yang didalamnya terdapat method super(). Method ini dipanggil untuk mengidedntifikasi nama dan versi database. Pada subclass ini juga terdapat method onCreate() untuk men-generate database jika sebelumnya tidak ada database yang sama dan juga method onUpdgrate() yang akan dieksekusi jika dijumpai database dengan versi lebih baru.
Method addRow bertugas untuk menambahkan data kedalam database. Didalamnya terdapat class ContentValues(), dipakai untuk menyimpan sepasang data. Baris put(ROW_NAMA, nama) artinya menambahkan data yang dibawa oleh variable nama kedalam kolom nama. Method ambilSemuaBaris digunakan untuk membaca seluruh isi database. Data yang terbaca kemudian disimpan kedalam array bertingkat. Output dari method ini adalah data [_id,nama,hobi].
Berikutnya kita bahas listing dalam activity AndroidDatabaseSatu.java. Acitivy ini memiliki 4 method yaitu onCreate(), simpKamuta(),updateTable(), kosongkanField(). Semua method diawali dengan void karena tidak mempunyai nilai kembalian apapun.
Pada method simpKamuta(), kita memakai method addRow() milik class DatabaseManager untuk menambahkan data ke dalam database. Sedangkan didalam method updateTable() kita memanggil method ambilSemuaBaris() untuk menampilkan data ke tabel. Method kosongkanField() dipakai untuk mengosongkan editteks kembali.
Sumber
omayib.com