- pertama – tama, ketik pada cmd anda ionic start BookStoreApp blank
2. Input y
3. Input n
4. Apabila proses instalasi sudah selesai, masuk ke folder anda dengan mengetik cd BookStoreApp
5. Kemudian install plugin SQLite, ketik ionic cordova plugin add cordova-sqlite-storage
6. Apabila muncul error, kita perlu install cordova secara global seperti gambar di bawah
7. Ketik npm i -g cordova
8. Kemudian ketik npm install –save @ionic-native/sqlite@4
9. Kemudian buka folder project BookStoreApp menggunakan IDE anda, masuk ke dalam src/app/app.module.ts untuk import plugin SQLite. Tambahkan import { SQLite } from ‘@ionic-native/sqlite’; serta SQLite seperti gambar di bawah.
10. Lalu kita akan membuat provider untuk database, ketik ionic generate provider database
11. Ubah code yang ada dalam src/provider/database/database.ts. Masukkan code di bawah
import { Injectable } from '@angular/core'; import { SQLite, SQLiteObject } from '@ionic-native/sqlite'; @Injectable() export class DatabaseProvider { db:SQLiteObject = null; constructor(private sqlite: SQLite) { } getOrGenerateDB() { // Generate DB adalah proses asynchronus, jadi bagusnya kita pakai promise // Walaupun prosesnya hanya sepersekian detik, tetap saja harus di tunggu. return new Promise((resolve, reject) => { if (this.db != null) { resolve(this.db) } else { this.sqlite.create({ name : 'myDatabase.db', location : 'default' }).then((db: SQLiteObject) => { this.db = db; resolve(this.db) }).catch((e) => { console.log(e); reject(e); }); } }); } createTable() { this.getOrGenerateDB().then((db: SQLiteObject) => { var sql = 'create table IF NOT EXISTS buku (' + 'id INTEGER PRIMARY KEY AUTOINCREMENT, '+ 'judul VARCHAR(255), '+ 'penerbit VARCHAR(50), '+ 'pengarang VARCHAR(50))'; db.executeSql(sql, {}) .then(() => console.log('tabel buku berhasil di create')) .catch(e => console.log(e)); // db.executeSql('DELETE FROM buku', {}) // .then(() => console.log('tabel buku berhasil di delete')) // .catch(e => console.log(e)); // db.executeSql('INSERT INTO buku values (?, ?,?,?)', // [null, "judullll", "penerbittt", "ppengarang OKEOKE"]) // .then(() => console.log('tabel buku berhasil di tambah')) // .catch(e => console.log(e)); // Untuk create table lainnya bisa ditambahkan di sini // contoh // var sql = 'create Tabel 2 IF NOT EXISTS delivery_form (' + // 'number VARCHAR(255) PRIMARY KEY, '+ // 'round_id VARCHAR(255), '+ // 'state VARCHAR(50), '+ // 'has_returns INTEGER(2), '+ // 'has_annotations INTEGER(2))'; // db.executeSql(sql, {}) // .then(() => console.log('delivery_form table has created')) // .catch(e => console.log(e)); }) } }
12. Ubah code yang ada dalam src/app/pages/home/home.ts. Masukkan code di bawah . Disini kita akan membuat fungsi untuk menampilkan semua data pada database.
import { Component, NgZone } from '@angular/core'; import { NavController } from 'ionic-angular'; import { SQLiteObject } from '@ionic-native/sqlite'; import { DatabaseProvider } from '../../providers/database/database'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { data:any=[]; constructor(public navCtrl: NavController, public zone: NgZone, public db: DatabaseProvider) { } ionViewDidEnter() { this.db.getOrGenerateDB().then((db: SQLiteObject) => { db.executeSql('SELECT * FROM buku', {}).then(res => { this.data = []; this.zone.run(() => { for (var i = 0; i < res.rows.length; i++) { this.data.push({ id: res.rows.item(i).id, judul: res.rows.item(i).judul }) } }) }).catch(e => console.log(e)); }); } edit(id) { this.navCtrl.push("BookformPage", {bookID: id}) } add() { this.navCtrl.push("BookformPage") } }
13. Ubah code yang ada dalam src/app/pages/home/home.html. Masukkan code di bawah . Disini kita akan membuat halaman untuk menampilkan semua data pada database.
<ion-header> <ion-navbar> <ion-title> Ionic CRUD SQLite </ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-scroll scrollY="true" direction="xy" style="height: 100vh;"> <ion-list > <ion-item tappable *ngFor="let a of data; let index = index" (click)="edit(a.id)" > {{a.judul}} </ion-item> </ion-list> </ion-scroll> <ion-fab bottom right> <button ion-fab (click) = "add()" >Add</button> </ion-fab> </ion-content>
14. Sekarang kita akan membuat sebuah halaman input data buku, ketik ionic generate page bookform
15. Ubah code yang ada dalam src/app/pages/bookform/bookform.ts. Masukkan code di bawah . Disini kita akan membuat fungsi untuk tambah data, ubah, serta hapus.
import { Component } from '@angular/core'; import { IonicPage, NavController, NavParams, ToastController } from 'ionic-angular'; import { SQLiteObject } from '@ionic-native/sqlite'; import { DatabaseProvider } from '../../providers/database/database'; @IonicPage() @Component({ selector: 'page-bookform', templateUrl: 'bookform.html', }) export class BookformPage { book: any = { judul: '', penerbit: '', pengarang: '' } title = ''; bookID = ''; toaster: any; constructor(public navCtrl: NavController, public navParams: NavParams, public toastCtrl: ToastController, public db: DatabaseProvider) { this.title = 'Tambah Buku'; this.bookID = navParams.get("bookID"); if (this.bookID != null || this.bookID != undefined) { this.title = 'Edit Buku'; } this.toaster = this.toastCtrl.create({ duration: 3000, position: 'bottom' }); } ionViewDidLoad() { if (this.bookID != '') { this.db.getOrGenerateDB().then((db: SQLiteObject) => { db.executeSql('SELECT * FROM buku where id = ?', [this.bookID]).then(res => { this.book = { id: res.rows.item(0).id, judul: res.rows.item(0).judul, penerbit: res.rows.item(0).penerbit, pengarang: res.rows.item(0).pengarang } }).catch(e => console.log(e)); }); } } save() { if (this.book.judul == '' || this.book.penerbit == '' || this.book.pengarang == '') { this.toaster.setMessage('All fields are required'); this.toaster.present(); } else { // Jika edit if (this.bookID) { var sql = 'UPDATE buku SET judul=?, penerbit=?, pengarang=? where id = ?'; var param = [this.book.judul, this.book.penerbit, this.book.pengarang, this.book.id]; } else { console.log(this.book); param = [null, this.book.judul, this.book.penerbit, this.book.pengarang] sql = 'INSERT INTO buku values (?,?,?,?)'; } this.db.getOrGenerateDB().then((db: SQLiteObject) => { db.executeSql(sql, param).then(res => { setTimeout(()=>{ this.navCtrl.pop(); }, 300) }).catch(e => console.log(e)); }); } } deleteBook() { this.db.getOrGenerateDB().then((db: SQLiteObject) => { db.executeSql('DELETE FROM buku where id = ?', [this.bookID]).then(res => { setTimeout(()=>{ this.navCtrl.pop(); }, 300) }).catch(e => console.log(e)); }); } }
16 . Ubah code yang ada dalam src/app/pages/bookform/bookform.html Masukkan code di bawah . Disini kita akan membuat tampilan input data buku.
<ion-header> <ion-navbar> <ion-title> {{ title }} </ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-list> <ion-item> <ion-label floating>Judul</ion-label> <ion-input type="judul" [(ngModel)] = "book.judul" ></ion-input> </ion-item> <ion-item> <ion-label floating>Penerbit</ion-label> <ion-input type="penerbit" [(ngModel)] = "book.penerbit" ></ion-input> </ion-item> <ion-item> <ion-label floating>Pengarang</ion-label> <ion-input type="pengarang" [(ngModel)] = "book.pengarang" ></ion-input> </ion-item> <ion-item text-center> <button ion-button round style="min-width: 200px; padding: 10px 16px" (click) = "save()">Save</button> <br/> <button ion-button round style="min-width: 200px; padding: 10px 16px" (click) = "deleteBook()">Delete</button> </ion-item> </ion-list> </ion-content>
17. Kemudian panggil fungsi createTable ( ) pada DatabaseProvider
18. Langkah terakhir dengan menambahkan satu parameter pada MyApp Constructor untuk mengaktifkan fungsi createTable ( ) pada DatabaseProvider
19. Sekarang bisa anda coba dengan emulator atau smartphone ,
0 Comments