Menyiapkan Akses Database lokal SQLite dalam Flutter

1. Menambahkan dependencies

Bukalah file pubspec.yaml lalu pada bagian dependencies masukan ini:

sqflite: ^2.4.2+1
path: ^1.9.1
Lalu simpan dan ketik perintah ini di terminal:
flutter pub get
Keterangan:
  • sqflite adalah Plugin dalam Flutter yang digunakan untuk berinteraksi dengan database SQLite
  • ^2.4.2+1 adalah versi terbaru saat tulisan ini dibuat
  • path adalah Plugin dart yang berhubungan dengan filepath

 

2. Membuat Koneksi ke Database

Bukalah file helper.dart lalu tambahkan kode berikut ini:

Future<Database> bukaDb() async {
  final pathDb = await getDatabasesPath();
  final lokasiFiledb = join(pathDb, ‘db_coba.db’);
  return openDatabase(
    lokasiFiledb,
    onCreate: (db, versi) {
      bikinTabelMurid(db, versi);
    },
    version: 1,
  );
}
Keterangan:
  • getDatabasesPath() adalah fungsi dari paket sqflite untuk mengambil lokasi database default
  • join(pathDb, ‘db_coba.db’) digunakan untuk menambahkan nama file db_coba.db ke variabel pathDb, dengan fungsi join ini maka pemisah direktori akan ditentukan sesuai sistem operasi yang digunakan

 

3. Membuat Tabel Murid

Masih dalam file helper.dart, tambahkanlah kode berikut ini:
Future bikinTabelMurid(Database db, int versi) async {
  String kuery =
      ‘CREATE TABLE IF NOT EXISTS murid(id INTEGER PRIMARY KEY, nama VARCHAR(40),  tempat_lahir VARCHAR(50), tgl_lahir VARCHAR(10),  jkel CHARACTER(1), alamat TEXT )’;
  await db.execute(kuery);
}

Keterangan:

  • db.execute(kuery) -> fungsi execute digunakan untuk menjalankan isi dari  variabel kuery

 

4. Masukin data ke Tabel Murid

Masih dalam file helper.dart, tambahkanlah kode berikut ini:

Future<int> masukinDataMurid(Map<String, dynamic> dataMurid) async {
int hasil = 0;
Database db = await bukaDb();
hasil = await db.insert(‘murid’, dataMurid);

return hasil;
}

Keterangan:

  • db.insert(‘murid’, dataMurid) -> fungsi insert digunakan untuk masukin variabel dataMurid ke tabel murid, tipe datanya harus Map<String, dynamic>

 

5. Update data pada Tabel Murid

Masih dalam file helper.dart, tambahkanlah kode berikut ini:

Future<void> updateDataMurid(Map<String, dynamic> dataMurid) async {
Database db = await bukaDb();
await db.update(
‘murid’,
dataMurid,
where: “id=?”,
whereArgs: [dataMurid[‘id’]],
);
}

Keterangan:

  •  db.update(‘murid’,dataMurid,where: “id=?”,whereArgs: [dataMurid[‘id’]],); -> fungsi update disini digunakan untuk update data dari isi variabel dataMurid ke tabel murid berdasarkan id

 

6. Hapus data dari Tabel Murid

Masih dalam file helper.dart, tambahkanlah kode berikut ini:

Future<void> hapusDataMurid(int id) async {
Database db = await bukaDb();
await db.delete(‘murid’, where: “id=?”, whereArgs: [id]);
}

Keterangan:

  • db.delete(‘murid’, where: “id=?”, whereArgs: [id]) -> fungsi delete disini untuk menghapus data dari tabel murid berdasarkan id

7. Ambil data dari Tabel Murid

Masih dalam file helper.dart, tambahkanlah kode berikut ini:

Future<List<Map<String, dynamic>>> tampilDataMurid() async {
Database db = await bukaDb();
return await db.query(‘murid’, orderBy: ‘id’);
}
Keterangan:
  • db.query(‘murid’, orderBy: ‘id’) -> fungsi query disini untuk mengambil semua data dari tabel murid diurutkan berdasarkan id