10.1: SQLite Primer

Materi:

Kursus ini beranggapan bahwa Anda sudah familier dengan database secara umum, terutama database SQL, dan bahasa SQL yang digunakan untuk berinteraksi dengannya. Bab ini sebagai penyegar dan referensi singkat saja.

Database SQL

  • Simpan data dalam baris dan kolom tabel.
  • Perpotongan suatu baris dan kolom disebut bidang.
  • Bidang berisi data, referensi ke bidang lain, atau referensi ke tabel lain.
  • Baris diidentifikasi melalui ID unik.
  • Kolom diidentifikasi melalui nama yang unik per tabel.

Anggaplah ini seperti spreadsheet dengan baris, kolom, dan sel, dalam hal ini sel bisa berisi data, referensi ke sel lain, dan tautan ke sheet lain.

SQLite

SQLite pustaka perangkat lunak yang mengimplementasikan mesin database SQL yang:

  • mandiri (tidak memerlukan komponen lain)
  • tanpa server (tidak memerlukan server-backend)
  • konfigurasi-nol (tidak perlu dikonfigurasi untuk aplikasi Anda)
  • transaksional (perubahan dalam satu transaksi di SQLite akan diterapkan pada semua bagian atau tidak diterapkan sama sekali)

SQLite adalah mesin database yang paling banyak diterapkan di seluruh dunia. Kode sumber untuk SQLite berada dalam domain publik.

Untuk detail database SQLite, lihat situs web SQLite.

Tabel contoh

SQLite menyimpan data dalam tabel.

Dengan anggapan berikut ini:

  • Database DATABASE_NAME
  • Tabel WORD_LIST_TABLE
  • Kolom untuk _id, kata, dan keterangan

Setelah menyisipkan kata "alpha" dan "beta", dalam hal ini alpha memiliki dua definisi, tabelnya akan terlihat seperti ini:

DATABASE_NAME

WORD_LIST_TABLE

_id

word

definition

1

"alpha"

"first letter"

2

"beta"

"second letter"

3

"alpha"

"particle"

Anda bisa menemukan apa yang ada dalam baris tertentu menggunakan _id, atau bisa mengambil baris dengan merumuskan kueri yang memilih baris dari tabel yang menetapkan pembatas. Gunakan bahasa kueri SQL yang dibahas di bawah ini untuk membuat kueri.

Transaksi

Transaksi adalah urutan operasi yang dijalankan sebagai satu unit kerja logis. Unit kerja logis harus menunjukkan empat properti, yaitu properti atomisitas, konsistensi, isolasi, dan ketahanan (ACID), untuk memenuhi syarat sebagai transaksi.

Semua perubahan dalam satu transaksi di SQLite diterapkan pada semua bagian atau tidak diterapkan sama sekali), bahkan jika tindakan menulis perubahan ke disk terputus karena

  • program mogok,
  • sistem operasi mogok, atau
  • listrik mati.

Contoh transaksi:

  • Mengirimkan uang dari rekening tabungan ke rekening giro.
  • Memasukkan suatu istilah dan definisi ke dalam kamus.
  • Mengikat changelist ke cabang utama.

ACID

  • Atomisitas. Semua modifikasi data dijalankan, atau tidak ada yang dijalankan.
  • Konsistensi. Bila selesai, suatu transaksi harus meninggalkan semua data dalam keadaan konsisten.
  • Isolasi. Modifikasi yang dibuat oleh transaksi yang terjadi bersamaan harus diisolasi dari modifikasi yang dibuat oleh transaksi bersamaan lainnya. Suatu transaksi mengenali data baik dalam keadaan sebelum transaksi bersamaan lainnya memodifikasinya, maupun mengenali data setelah transaksi kedua selesai, namun tidak mengenali keadaan di antara keduanya.
  • Ketahanan. Setelah transaksi selesai, efeknya diterapkan permanen dalam sistem. Modifikasi tetap ada bahkan seandainya listrik mati.

Selengkapnya mengenai transaksi.

Bahasa kueri

Anda menggunakan bahasa kueri SQL khusus untuk berinteraksi dengan database. Kueri bisa sangat kompleks, namun operasi dasarnya adalah

  • menyisipkan baris
  • menghapus baris
  • memperbarui nilai dalam baris
  • mengambil baris yang memenuhi kriteria tertentu

Di Android, objek database menyediakan metode praktis untuk menyisipkan, menghapus, dan memperbarui database. Anda hanya perlu memahami SQL untuk mengambil data.

Keterangan lengkap mengenai bahasa kueri.

Struktur kueri

Kueri SQL sangat terstruktur dan berisi bagian dasar berikut:

  • SELECT kata, keterangan FROM WORD_LIST_TABLE WHERE kata="alpha"

Versi generik kueri contoh:

  • SELECT kolom FROM tabel WHERE kolom="value"

Bagian:

  • SELECT kolom—memilih kolom untuk dikembalikan. Gunakan * untuk mengembalikan semua kolom.
  • FROM tabel—menetapkan tabel yang dipakai untuk mendapatkan hasil.
  • WHERE—kata kunci untuk ketentuan yang harus terpenuhi.
  • kolom="value"—ketentuan yang harus dipenuhi.
    • operator umum: =, LIKE, <, >
  • AND, OR—menghubungkan beberapa ketentuan dengan operator logika.
  • ORDER BY—mengabaikan urutan default, atau menetapkan ASC untuk menaik, DESC untuk menurun.
  • LIMIT adalah kata kunci yang sangat berguna jika Anda ingin mendapatkan jumlah hasil yang terbatas.

Kueri contoh

1

SELECT * FROM WORD_LIST_TABLE

Mendapatkan seluruh tabel.

2

SELECT word, definition FROM WORD_LIST_TABLE WHERE _id > 2

Mengembalikan

[["alpha", "particle"]]

3

SELECT _id FROM WORD_LIST_TABLE WHERE word="alpha" AND definition LIKE "%art%"

Mengembalikan id kata alpha dengan substring "art" dalam definisi.

[["3"]]

4

SELECT * FROM WORD_LIST_TABLE ORDER BY word DESC LIMIT 1

Mengurutkan secara terbalik dan mengambil item pertama. Hal ini akan memberi Anda item terakhir untuk setiap urutan penyortiran. Pengurutan berdasarkan kolom pertama, dalam hal ini, _id.

[["3", "alpha", "particle"]]

5

SELECT * FROM WORD_LIST_TABLE LIMIT 2,1

Mengembalikan 1 item mulai posisi 2. Penghitungan posisi dimulai dari 1 (bukan nol!). Mengembalikan [["2", "beta", "second letter"]]

Anda bisa berlatih dengan membuat dan menjalankan kueri database pada situs web Fiddle dan HeadFirst Labs.

Kueri untuk Android SQLite

Anda bisa mengirimkan kueri ke database SQLite sistem Android sebagai kueri mentah atau sebagai parameter.

Tabel berikut menampilkan bagaimana dua kueri pertama dari hal di atas akan terlihat sebagai kueri mentah.

1

String query = "SELECT * FROM WORD_LIST_TABLE";

rawQuery(query, null);

2

query = "SELECT word, definition FROM WORD_LIST_TABLE WHERE _id> ? ";

String[] selectionArgs = new String[]{"2"}

rawQuery(query, selectionArgs) ;

Inilah kueri yang menampilkan cara mengisi argumen:

SELECT * FROM WORD_LIST_TABLE
WHERE word="alpha"
ORDER BY word ASC
LIMIT 2,1;

Mengembalikan:

[["alpha", "particle"]]
String table = "WORD_LIST_TABLE"
String[] columns = new String[]{"*"};
String selection = "word = ?"
String[] selectionArgs = new String[]{"alpha"};
String groupBy = null;
String having = null;
String orderBy = "word ASC"
String limit = "2,1"

query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);

Perhatikan, dalam kode sebenarnya, Anda tidak akan membuat variabel untuk nilai nol. Lihat dokumentasi SQLiteDatabase untuk versi metode ini dengan parameter berbeda.

Kursor

Kueri selalu mengembalikan objek Cursor. Cursor adalah antarmuka objek yang menyediakan akses baca-tulis acak ke rangkaian hasil yang dikembalikan oleh kueri database. Kursor menunjuk elemen pertama dalam hasil kueri.

Kursor adalah pointer ke dalam baris data terstruktur. Anda bisa menganggapnya sebagai pointer ke baris tabel.

Kelas Cursor menyediakan metode untuk menggerakkan kursor melalui struktur itu, dan metode untuk mendapatkan data dari kolom setiap baris.

Bila metode mengembalikan objek Cursor, Ulangi hasil, ekstrak data, lakukan sesuatu dengan data, dan terakhir tutuplah kursor untuk membebaskan memori.

Anda akan mengetahui selengkapnya tentang kursor dalam bab berikut.

Ketahui selengkapnya

results matching ""

    No results matching ""