Eriq Muhammad A. J., ST., M.Kom., Widhy Hayuhardhika, S.Kom - Teknik Informatika-Program Teknologi Informasi dan Ilmu Komputer
BAB 8 – SQLite Database
Pemrograman Perangkat Mobile Teknik Informatika-Program Teknologi Informasi dan Ilmu Komputer Universitas Brawijaya
Pemrograman Perangkat Mobile
Eriq Muhammad A. J., ST., M.Kom., Widhy Hayuhardhika, S.Kom
1. Pendahuluan
SQLite menyediakan fasilitas relational DBMS dengan perintah SQL. Referensi lengkap SQL yang digunakan dapat dilihat di http://www.sqlite.org/lang.html
Tujuan Instruksional Khusus
Penguasaan materi dalam modul ini, akan dapat
1. Membuat aplikasi dengan menggunakan database pada perangkat Android menggunakan SQLite
Daftar Materi
1. PENDAHULUAN
1.1 SQLite
2. MENGAKSES DAN MENGOLAH DATABASE 2.1 Class DB Adaptor
2.2 Fungsi-fungsi untuk mengolah database 3. LATIHAN / SOAL / KUIS / PROJEK
1.1 SQLite
SQLite merupakan sebuah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp.
Tidak seperti pada paradigma client-server umumnya, Inti SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Mekanisme seperti ini tentunya membawa keuntungan karena dapat mereduksi overhead, latency times, dan secara keseluruhan lebih sederhana. Seluruh elemen basisdata (definisi data, tabel, indeks, dan data) disimpan sebagai sebuah file. Kesederhanaan dari sisi disain tersebut bisa diraih dengan cara mengunci keseluruhan file basis data pada saat sebuah transaksi dimulai
2. Mengakses dan Mengolah Database 2.1 DB Adaptor
Untuk membuat database dengan aplikasi Android, dapat digunakan library SQLite yang sudah ada dalam Android Run Time. Tidak ada database yang secara langsung disediakan oleh android, maka harus dibuat dulu database dan tabel-tabelnya. Untuk membuat dan membuka database dengan SQLite, digunakan library yang diimport dari android.database.sqlite.SQLiteOpenHelper
Untuk itu, dibuat kelas DB Adaptor yang digunakan untuk membuat koneksi dengan database, dan untuk mengolah database.
Berikut ini adalah sintaks kelas DB Adaptor.
DBAdaptor.java
package ub.itcc.database1;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdaptor {
public static final String KEY_ROWID = "_id";
public static final String KEY_ISBN = "isbn";
public static final String KEY_TITLE = "title";
public static final String KEY_PUBLISHER = "publisher";
private static final String TAG = "DBAdaptor";
private static final String DATABASE_NAME = "books";
private static final String DATABASE_TABLE = "titles";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
Eriq Muhammad A. J., ST., M.Kom., Widhy Hayuhardhika, S.Kom - Teknik Informatika-Program Teknologi Informasi dan Ilmu Komputer
"create table titles (_id integer primary key autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdaptor(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
} }
//---opens the database---
public DBAdaptor open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database--- public void close()
{
DBHelper.close();
}
//---insert a title into the database---
public long insertTitle(String isbn, String title, String publisher) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_ISBN, isbn);
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_PUBLISHER, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---deletes a particular title--- public boolean deleteTitle(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
//---retrieves all the titles--- public Cursor getAllTitles() {
return db.query(DATABASE_TABLE, new String[] { KEY_ROWID,
KEY_ISBN, KEY_TITLE, KEY_PUBLISHER}, null,
null, null, null, null);
}
//---retrieves a particular title---
public Cursor getTitle(long rowId) throws SQLException {
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] { KEY_ROWID,
KEY_ISBN, KEY_TITLE, KEY_PUBLISHER },
KEY_ROWID + "=" + rowId, null,
null, null, null, null);
if (mCursor != null) { mCursor.moveToFirst();
}
return mCursor;
}
//---updates a title---
public boolean updateTitle(long rowId, String isbn, String title, String publisher)
{
ContentValues args = new ContentValues();
args.put(KEY_ISBN, isbn);
args.put(KEY_TITLE, title);
args.put(KEY_PUBLISHER, publisher);
return db.update(DATABASE_TABLE, args,
KEY_ROWID + "=" + rowId, null) > 0;
} }
Eriq Muhammad A. J., ST., M.Kom., Widhy Hayuhardhika, S.Kom - Teknik Informatika-Program Teknologi Informasi dan Ilmu Komputer
2.2
Fungsi untuk Pengolahan Database
Untuk membuat aplikasi dengan SQLite dibutuhkan libraries yg berhubungan dengan SQLite:
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
Nama database, version dan konfigurasinya didefinisikan dalam coding sebagai berikut : public static final String KEY_ROWID = "_id";
public static final String KEY_ISBN = "isbn";
public static final String KEY_TITLE = "title";
public static final String KEY_PUBLISHER = "publisher";
private static final String TAG = "DBAdaptor";
private static final String DATABASE_NAME = "books";
private static final String DATABASE_TABLE = "titles";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table titles (_id integer primary key autoincrement, "
+ "isbn text not null, title text not null, "
+ "publisher text not null);";
Untuk create database dilakukan dalam coding berikut : public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
Fungsi untuk open database dalam coding berikut : //---opens the database---
public DBAdaptor open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
Fungsi untuk insert dalam database (contoh berikut untuk menambahkan judul buku) : //---insert a title into the database---
public long insertTitle(String isbn, String title, String publisher) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_ISBN, isbn);
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_PUBLISHER, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}
Fungsi untuk delete record dalam coding berikut ini : //---deletes a particular title--- public boolean deleteTitle(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
Fungsi untuk menampilkan semua record : //---retrieves all the titles--- public Cursor getAllTitles() {
return db.query(DATABASE_TABLE, new String[] { KEY_ROWID,
KEY_ISBN, KEY_TITLE, KEY_PUBLISHER}, null,
null, null, null, null);
}
Fungsi untuk mengupdate record : //---updates a title---
public boolean updateTitle(long rowId, String isbn, String title, String publisher)
{
ContentValues args = new ContentValues();
args.put(KEY_ISBN, isbn);
args.put(KEY_TITLE, title);
args.put(KEY_PUBLISHER, publisher);
return db.update(DATABASE_TABLE, args,
KEY_ROWID + "=" + rowId, null) > 0;
}
3. SOAL DAN PROJECT
Soal
1. Apakah yang dimaksud dengan Class DB Adaptor?
2. Bagaimana setting database SQLite?
Project
Buat aplikasi menggunakan SQLite untuk insert data mahasiswa dan menampilkannya.
REFERENSI
Yudhi , Wibisono .2011. Pengantar Mobile Programming dengan Android, UPI.
Safaat, H. Nazruddin. 2011. ANDROID Pemrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android, Penerbit Informatika.
Eriq Muhammad A. J., ST., M.Kom., Widhy Hayuhardhika, S.Kom - Teknik Informatika-Program Teknologi Informasi dan Ilmu Komputer