Anda di halaman 1dari 40

SQLite

Kemampuan Akhir Yang diharapkan:

1. Mahasiswa mampu membuat Aplikasi SQlite


2. Mampu memahami query dasar SQL
3. Mahasiswa mampu membuat aplikasi CRUD menggunakan SQLite database
Dasar Teori

SQL (Structured Query Language)


SQL ( Structured Query Language) adalah suatu bahasa pemograman khusus pada sistem
manajemen di database yang menggunakan instruksi-instruksi khusus dalam memanipulasikan data
guna menjalankan perintah-perintahnya.
Dalam hal ini, Query memegang peranan penting sebagai instruksi-intruksi yang berguna
dalam pengelolaan database. Diketahui SQL (Structured Query Language) sudah diakui oleh ANSI
secara de facto sebagai salah satu bahasa pemograman database yang memiliki standar khusus.
SQL (Structured Query Language) adalah bahasa pemograman yang penting untuk dipahami
karena bisa menjadi relasi bagi beberapa tabel dengan database maupun antar database itu sendiri.
Ada tiga jenis SQL (Structured Query Language) yang wajib untuk diketahui diantaranya, yaitu Data
Manipulation Language (DML), Data Definition Language (DDL), dan Data Control Language
(DCL).
Banyak DBMS ( Database Management System ) yang menggunakan SQL sebagai fasilitas
untuk manipulasi data, seperti SQLServer, MySQL, PostgreSQL, Foxpro, dan yang akan kita pelajari
yaitu SQLite.

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).

Penjelasan lebih lanjut dapat dilihat pada link berikut :


https://www.tutorialspoint.com/sqlite/index.htm

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.

DDL - Data Definition Language

No. Command & Description

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.

DML - Data Manipulation Language

No. Command & Description

1 INSERT
Memasukan input data

2 UPDATE
Mengubah Data

3 DELETE
Menghapus data

DQL - Data Query Language


No. Command & Description

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 (;).

SQLite CREATE TABLE Statement


CREATE TABLE adalah perintah yang digunakan untuk membuat table database.

CREATE TABLE table_name(


column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
Contoh :
CREATE TABLE biodata (
id INTEGER,
nama TEXT,
umur INTEGER,
jk TEXT,
PRIMARY KEY (id AUTOINCREMENT))
SQLite INSERT INTO Statement
INSERT INTO adalah perintah yang digunakan untuk menambahkan record/data ke dalam
table database.

INSERT INTO table_name( column1, column2....columnN)


VALUES ( value1, value2....valueN);
Contoh :
INSERT INTO biodata VALUES (
null,
"Adzikirani",
27,
"Pria")

SQLite UPDATE Statement


Update adalah perintah query yang digunakan untuk mengubah data yang sudah ada pada
table di database.

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;

SQLite DELETE Statement


DELETE adalah perintah query SQL yang digunakan untuk menghapus data tertentu sesuai
kondisi yang diinginkan dari data/record yang ada pada table di database.

DELETE FROM table_name


WHERE {CONDITION};
Contoh :
DELETE FROM biodata
WHERE id=1;

SQLite SELECT Statement


SELECT adalah perintah yang digunakan untuk menampilkan data/record yang ada pada
sebuah table di database.

SELECT column1, column2....columnN


FROM table_name;
Contoh :
SELECT nama, umur, jk
from biodata;

Untuk menampilkan semuanya, dapat menggunakan tanda bintang (*)

Contoh :
SELECT * FROM biodata;
Bisa juga diberi statement where untuk menampilkan data tertentu

Contoh :
SELECT * from biodata WHERE umur=27;

SQLite DROP TABLE Statement


DROP TABLE adalah perintah yang digunakan untuk menghapus table yang ada pada
database

DROP TABLE database_name.table_name;


Contoh :
DROP TABLE biodata
SQLite Browser
Untuk mencoba query sqlite, Anda dapat menggunakan aplikasi sqlite
browser, download aplikasi Sqlite Browser di link berikut
https://sqlitebrowser.org/dl/ .
Instal dengan menjalankan file yang telah di download.
Untuk memulai, klik New Database untuk membuat database baru

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

public abstract void onCreate(SQLiteDatabase Dipanggil sekali ketika


db) database pertama kali
dibuat.

public abstract void onUpgrade(SQLiteDatabase Dipanggil ketika


db, int oldVersion, int newVersion) database akan diupgrade

public synchronized void close () Menutup database.

public void onDowngrade(SQLiteDatabase db, Dipanggil ketika


int oldVersion, int newVersion) database akan di
downgrade
Selain itu ada beberapa method database Sqlite yang telah disediakan oleh android studio.
Diantaranya adalah :

Method Description

void execSQL(String sql) Menjalankan query

long insert(String table, String Memasukan data/record ke dalam database.


nullColumnHack, ContentValues Parameter pertama berisi nama table,
values) parameter kedua berisi isian yang akan
diisikan ketika data kosong (isikan dengan
null), dan parameter ketiga berisi
values/nilai yang akan dimasukan ke dalam
database.

int update(String table, Mengupdate data


ContentValues values, String
whereClause, String[]
whereArgs)

Cursor query(String table, returns a cursor over the resultset.


String[] columns, String
selection, String[]
selectionArgs, String groupBy,
String having, String orderBy)

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 :

 getCount(), mengembalikan jumlah baris dalam cursor.

 getColumnNames(), mengembalikan larik string yang berisi nama semua kolom dalam

rangkaian hasil dalam urutan pencantumannya dalam hasil/result.

 getPosition(), mengembalikan posisi cursor saat ini dalam rangkaian baris.

 Getter tersedia untuk tipe data tertentu, seperti getString(int column) dan getInt(int

column).
 Operasi seperti moveToFirst() dan moveToNext() akan menggerakan cursor.

 close(), membebaskan semua sumber daya dan membuat cursor menjadi tidak valid.

Ingat, untuk menutup panggilan, guna membebaskan sumber daya

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

2. Menambahkan class model biodata


Sama seperti menggunakan firebase pada project sebelumnya, untuk menggunakan
SQLite juga dibutuhkan sebuah class biodata digunakan untuk memanage data dari Biodata
dari firebase ke dalam android atau sebaliknya, dengan menambahkan method setter dan
getter.
Buat sebuah java class baru, beri nama biodata.
Database Biodata, nantinya akan memiliki 4 buah data, yaitu, id, nama, umur, dan jenis
kelamin. Pada file Biodata.java yang baru dibuat, tambahkan variable string sesuai dengan data
tersebut.

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)

Sehingga tampilan dari class biodata akan menjadi seperti berikut


3. Membuat tampilan untuk melakukan proses CRUD

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>

Untuk listview, kita buat sebuah layout baru, berinama layoutlistview.


Dan untuk komponennya, tambahkan 3 buah textview yang nantinya digunakan untuk
menampilkan nama,umur, dan jenis kelamin.
Kemudian tambahkan sebuah java class untuk mengatur listView,
Buat sebuah method constructor pada class listview_biodata dengan code seperti berikut,
dimana method ini dibuat untuk menampilkan listview_biodata dari layout_listview.xml yang telah
dibuat sebelumnya.

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 menjadi seperti berikut


4. Menambahkan database helper
Tambahkan sebuah java class baru dengan nama DatabaseHelper.java , extends
SQLiteOpenHelper class dan menyediakan implementasi terhadap method method CRUD
Database. Class ini nantinya berisi semua perintah terhadap database, Seperti CREATE
TABLE, INSERT INTO, UPDATE, DELETE, dan SELECT..
Tambahkan method implementasidengan cara mengklik lampu merah dibagian atas, atau
dengan menekan tombol Alt+enter.

Sehingga membuat method onCreate dan onUpgrade secara otomatis seperti berikut.

Tambahkan juga method constructor dengan cara yang sama


Sehingga menjadi seperti berikut

Pada class DatabaseHelper.java tersebut, tambahkan beberapa variable seperti berikut :


Kemudian ubah, method constructor Listview_Biodata yang sudah dibuat sebelumnya
menjadi 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

a. Menambahkan Fitur Create (Menambahkan data ke database SQLite)

Untuk menambahkan data ke firebase (Create) diperlukan sebuah object DatabaseHelper


yang telah dibuat sebelumnya, nantinya digunakan sebagai referensi data dari Sqlite.
Tambahkan code berikut untuk menambahkan editText, Spinner, dan databaseHelper
pada file MainActivity.java
Database akan ditambahkan ketika button AddBio di klik, untuk itu, buat sebuah method
untuk menghandle onClick dengan nama addBiodata(View view).

Dan tambahkan ke attribut android:onClick

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.

b. Menambahkan Fitur Read (Menampilkan data dari database SQLite)

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 :

Dan pada method onCreate tambahkan :


Kemudian buat method tampilData() yang nantinya berisi perintah untuk menampilkan
data dari database ke dalam ListView

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 :

Dan kemudian tambahkan pada attribut android:onClick pada kedua button :


Untuk proses update, mirip dengan proses penambahan data, tambahkan code seperti berikut pada
method buttonudateBiodata().
Dan untuk proses Delete, panggil method .delete yang telah dibuat sebelumnya untuk menghapus
data sesuai id biodata. Tambahkan code seperti berikut pada method buttondeleteBiodata().

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

Anda mungkin juga menyukai