SQLite
SQLite adalah perpustakaan perangkat lunak yang menerapkan engine database SQL
secara mandiri, tanpa memerlukan server, tanpa perlu melakukan konfigurasi, dan bersifat
transaksional. SQLite adalah engine database SQL yang paling banyak digunakan di
dunia. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard
Hipp.
SQLite adalah sebuah engine database SQL yang langsung tertanam atau pada aplikasi.
Tidak seperti kebanyakan database SQL lainnya, SQLite tidak memiliki server yang terpisah dari
aplikasi. SQLite membaca dan menulis langsung ke file disk biasa. Database SQLite memiliki
fitur lengkap dengan banyak tabel, indexs, trigger, dan tampilan, serta tersimpan pada satu file
tunggal dalam hard-disk. Format file databasenya bersifat cross-platform. Sehingga Anda dapat
dengan bebas menyalin database antara sistem 32-bit dan 64-bit atau antara arsitektur yang
berbeda flatform. Fitur-fitur ini membuat SQLite menjadi pilihan populer sebagai Application
File Format.
SQLite telah didukung oleh banyak bahasa pemrograman seperti C, C ++, BASIC, C #,
Python, Java dan Delphi. Dukungan dari COM (ActiveX) membuat SQLite dapat diakses ke
bahasa scripted di Windows seperti VB Script dan JavaScript, sehingga akan menambah
kemampuan untuk aplikasi HTML. Dukungan terhadap database ini juga tersedia di sistem
operasi embedded seperti iOS, Android, Symbian OS, Maemo, Blackberry dan WebOS karena
ukurannya yang kecil dan mudah digunakan.
Berikut ini beberapa keunggulan SQLite:
SQLite tidak memerlukan proses atau sistem server yang terpisah untuk beroperasi
(Serverless).
SQLite hadir dengan zero-configuration, yang berarti tidak ada setup atau administrasi yang
dibutuhkan.
Database SQLite yang lengkap disimpan dalam file tunggal yang tersimpan dalam disk serta
bersifat cross-platform.
SQLite sangat kecil dan ringan, kurang dari 400KiB untuk konfigurasi lengkap atau kurang
dari 250KiB dengan fitur opsional dihilangkan.
SQLite bersifat mandiri, yang berarti tidak ada dependensi eksternal.
Transaksi SQLite sepenuhnya sesuai dengan ACID, memungkinkan akses yang aman dari
banyak proses.
SQLite mendukung sebagian besar fitur bahasa query yang ditemukan dalam standar SQL92
(SQL2).
SQLite ditulis dalam ANSI-C dan menyediakan API yang sederhana dan mudah digunakan.
SQLite tersedia di semua sistem operasi baik ini UNIX (Linux, Mac OS-X, Android, iOS)
dan Windows (Win32, WinCE, WinRT).
Perintah SQLite
Perintah SQLite standar untuk berinteraksi dengan database relasional mirip dengan SQL
pada umumnya, seperti CREATE, SELECT, INSERT, UPDATE, DELETE, dan DROP. Perintah-
perintah ini dapat diklasifikasikan ke dalam kelompok berdasarkan sifat operasionalnya.
1 CREATE
Membuat tabel baru, tampilan tabel, atau objek lain dalam database.
2 ALTER
Mengubah objek database yang sudah ada, seperti tabel
3 DROP
Menghapus seluruh tabel, tampilan tabel atau objek lain dalam database.
1 INSERT
Memasukan input data
2 UPDATE
Mengubah Data
3 DELETE
Menghapus data
1 SELECT
Menampilkan data tertentu dari 1 atau lebih tabel.
Syntax SQLite
Syntax yang digunakan SQLite adalah case insensitive, yang berarti huruf besar/ huruf
kecil tidak berpengaruh pada statemen SQLite.
Semua pernyataan SQLite dimulai dengan salah satu kata kunci seperti SELECT, INSERT,
UPDATE, DELETE, ALTER, DROP, dll., Dan semua pernyataan diakhiri dengan titik koma (;).
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
Contoh :
UPDATE biodata set
nama = "Diki",
umur=99,
jk="Pria"
WHERE id=1;
Contoh :
SELECT * FROM biodata;
Bisa juga diberi statement where untuk menampilkan data tertentu
Contoh :
SELECT * from biodata WHERE umur=27;
Pada window Edit table Anda dapat menambahkan table dengan mengisi query create table
pada kolom bawah, atau dengan menggunakan tombol add pada kolom tengah.
Untuk mencoba query, gunakan tab EXECUTE SQL, dan isikan query yang seperti contoh
diatas.
SQLite di Android Studio
Pada penggunaan SQLite di android studio, tidak perlu pengaturan khusus seperti firebase.
Anda dapat langsung menggunakan database SQLite karena telah tersedia secara default.
SQLiteOpenHelper class
Yang perlu ditambahkan adalah sebuah java class yang meng extend SQLiteOpenHelper
yang berguna untuk memanage semua proses dan operasi database. Ada beberapa method yang
digunakan dalam class ini, diantaranya adalah :
Method Description
Method Description
Cursor
SQLiteDatabase selalu menyajikan hasil berupa Cursor dalam format tabel yang
menyerupai database SQL. Anda bisa menganggap data sebagai larik baris dan cursor adalah
pointer ke dalam satu baris data terstruktur. Kelas Cursor menyediakan metode untuk
menggerakan cursor melalui struktur data, dan metode untuk mendapatkan data dari bidang-
bidang setiap baris.
Beberapa operasi umum yang ada pada cursor adalah :
getColumnNames(), mengembalikan larik string yang berisi nama semua kolom dalam
column).
Operasi seperti moveToFirst() dan moveToNext() akan menggerakan cursor.
close(), membebaskan semua sumber daya dan membuat cursor menjadi tidak valid.
PRAKTIKUM
Pada praktikum SQLite, aplikasi yang dibuat tidak jauh berbeda dengan aplikasi
sebelumnya yang menggunakan Database Firebase, perbedaannya hanyalah database yang
digunakan, pada praktium ini menggunakan Database SQLite.
1. Buat New Project, Beri nama Sqlite_1, Gunakan minimum API 21 keatas (21+) agar dapat
menggunakan semua fitur
Dan tambahkan 2 buah method konstuktor untuk kelas Biodata. Method konstruktor akan
dipanggil ketika object biodata dibuat/digunakan. Method pertama merupakan method konstruktor
kosong, dan method yang kedua akan dipanggil jika objek biodata dipanggil dengan isian parameter
berupa id,nama,umur, dan jenis kelamin.
Kemudian tambahkan method get dan set untuk semua parameter. (Pada project sebelumnya
*firebase* tidak menggunakan setter)
Untuk tampilan yang digunakan sama persis seperti pada saat menggunakan database
Firebase.
Untuk proses CRUD, terbagi menjadi 2 activity, dan 1 tampilan untuk listView.
Activity pertama untuk menambahkan data (Create) dan menampilkan data dari database
(Read). Dan Activity yang kedua untuk proses Update dan Delete.
Pada layout activity_main.xml tambahkan 2 EditText, 1 Spinner, 1 Button, dan 1
ListView. Sehingga tampilan menjadi seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editTextNama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Isi Nama"
android:inputType="textPersonName" />
<EditText
android:id="@+id/editTextUmur"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editTextNama"
android:hint="Umur"
android:inputType="number" />
<Spinner
android:id="@+id/spinnerJK"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editTextUmur"
android:entries="@array/jeniskelamin" />
<Button
android:id="@+id/buttonAddbio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/spinnerJK"
android:text="Add" />
<ListView
android:id="@+id/listView_bio"
android:layout_width="match_parent"
android:layout_height="match_parent"
Array jeniskelamin adalah sebuah string-array yang ditambahkan pada file strings.xml
Tambahkan sebuah activity baru, yang nantinya digunakan untuk proses update dan delete.
Pada activity tersebut, tambahkan 2 EditText, 1 Spinner, dan 2 Button untuk update dan delete.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2"
android:orientation="vertical">
<EditText
android:id="@+id/editText_updateNama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter name" />
<EditText
android:id="@+id/editText_updateUmur"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editText_updateNama"
android:hint="Enter Umur"
android:inputType="number" />
<Spinner
android:id="@+id/spinner_updateJk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editText_updateUmur"
android:entries="@array/jeniskelamin"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/buttonUpdateBio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Update" />
<Button
android:id="@+id/buttonDeleteBio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Delete" />
</LinearLayout>
</LinearLayout>
Masih di class listview_biodata, Tambahkan method getView, yang nantinya akan dipanggil
setiap data biodata dari firebase yang ditampilkan dalam 3 buah textView, yaitu nama, umur, dan
jenis kelamin.
Sehingga membuat method onCreate dan onUpgrade secara otomatis seperti berikut.
Tambahkan code berikut pada method callback onCreate. Untuk membuat table dengan
query yang ada pada variable CREATE_TABLE. Method onCreate hanya akan dipanggil 1 kali
ketika database pertama kali dibuat.
Tambahkan code berikut pada method callback onUpgrade yang akan dipanggil ketika
database perlu di Upgrade
Untuk proses insert data, tambahkan Method dengan nama insertData() seperti berikut
untuk menambahkan data ke dalam database.
Untuk proses delete data, tambahkan Method dengan nama Delete() seperti berikut untuk
menghapus data yang ada di dalam database.
Untuk proses insert data, tambahkan Method dengan nama update() seperti berikut untuk
mengubah data yang ada di database.
Untuk menampilkan semua data, tambahkan Method dengan nama selectAll() seperti
berikut untuk menampilkan semua data dari database.
Untuk proses update dan delete nantinya, dibutuhkan method untuk menampilkan 1 data
yang dipilih, tambahkan Method dengan nama getBiodata() seperti berikut untuk menampilkan 1
data dari database sesuai id yang digunakan.
Pada MainActivity.java
Kemudian, pada method tersebut, tambahkan code untuk menambahkan data dari editText
dan spinner ke dalam database SQLite seperti berikut.
Ambil data dari editText dan Spinner ke dalam Variable String, kemudian lakukan
pengecekan nilai kosong (isEmpty()) agar aplikasi tidak force close ketika input masih kosong.
Coba jalankan, dan coba input data pada editText dan spinner lalu klik tombol ADD. Lihat
toast yang muncul, jika berhasil, lanjutkan ke proses selanjutnya.
Untuk menampilkan data dari database, nantinya data akan ditampilkan pada ListView yang
telah dibuat sebelumnya. Langkah pertama yang perlu dilakukan adalah membuat objek instansi dari
listView dan sebuah variable List untuk menyimpan data Biodata sementara :
Panggil method tampilData tersebut pada method callBack onStart() agar data ditampilkan
setiap method onStart dipanggil.
Juga tambahkan pada method addBiodata() agar data yang ditampilkan terupdate setelah
data ada yang ditambahkan
Kemudian coba jalankan aplikasi dan lihat hasilnya. Coba juga tambahkan data.
c. Menambahkan Fitur Update dan Delete
Fitur Update dan Delete akan di manage pada activty yang kedua yaitu mainactivity2, Oleh
karena itu dari MainActivity.java akan mengirimkan data (intent) berupa id dari data yang di klik
pada listView menuju MainActivity2.
Pada method onCreate, di MainActivity.java, tambahkan code sebagai berikut untuk
berpindah activity (intent) ketika listView di klik :
Kemudian pada MainActivity2.java, tambahkan code untuk mengambil id dari intent yang
dikirimkan dari MainActivity.java, id tersebut akan digunakan sebagai referensi untuk pemanggilan
data dari SQLite.
Buat method tampildata() untuk menampilkan data dari id yang ada ke dalam editText dan spinner seperti
berikut
Kemudian panggil method tampilData pada method callBack onCreate()
Untuk proses update dan delete, nantinya data akan di update ketika button update di klik, dan akan
dihapus ketika button delete di klik, untuk itu tambahkan method button handler untuk keduanya :
Pada proses update dan delete, terdapat perintah finish() yaitu perintah yang dipanggil ketika proses
update dan delete sukses, MainActivity2.java akan di tutup, dan akan kembali ke activity utama yaitu
MainActivity.java.
Coba jalankan dan pastikan aplikasi telah berhasil untuk proses update dan delete data.
Lampiran :
1. File Project
2. Biodata.java
3. Listview_Biodata.java
4. DatabaseHelper.Java
5. MainActivity.Java
6. MainActivity2.java