Membuat Database SQLite di Aplikasi Android

Android 22 Nov 2015
Artikel ini sudah usang, silahkan gunakan Room untuk membuat local datatabase https://teknorial.com/blog/membuat-database-room-di-kotlin/

Membuat Database SQLite di Aplikasi Android. Disarankan untuk membaca artikel Mengenal SQLite Database Pada Aplikasi Android sebelum melanjutkan tutorial ini.

Langkah-langkah Membuat Database SQLite

1. Definisikan skema (Define Schema).
Definisikan nama database, versi, nama tabel, dan nama kolom.
2. Membuat database (Create Database).
Tulis query untuk membuat/modifikasi database.
3. Eksekusi Query (Execute Queries)
Eksekusi query seperti insert, update, delete dan lainnya.

1.Definisikan skema (Define Schema).

Contoh database

Contoh database


Gambar di atas adalah contoh database yang akan digunakan dalam tutorial ini. Untuk mendefinisikan skema pelajari kode berikut ini.

String DATABASE_NAME="teknorialdatabase.db"; //bisa juga tanpa tulis ekstensi .db
String TABLE_NAME="teknorialtable";
String UID ="_id";
String NAME ="Nama";
Int DATABASE_VERSION=1;

2. Membuat database (Create Database) dengan menggunakan SQLiteOpenHelper.

Buat subclass dari SQLiteOpenHelper implementasikan onCreate(SQLiteOpenHelper), dan onUpgrade(SQLiteDatabase,int,int). Class ini akan membuka database jika ada, membuat database jika tidak ada dan meng-upgade jika diperlukan.

class RezaHelper extends SQLiteOpenHelper
{
	private static final String DATABASE_NAME="teknorialdatabase.db";
	private static final String TABLE_NAME ="teknorialtable";
	private static final String UID="_id";
	private static final String NAME="Nama";
	private static final int DATABASE_VERSION=1;
	RezaHelper(Context context)
	{
		super(context, DATABASE_NAME, null,DATABASE_VERSION);
	}
	public void onCreate(SQLiteDatabase db)
	{
	}
	public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion)
	{
	}	
}

- onCreate(): Dipanggil ketika database dapat diakses namum belum dibuat. Pembuatan tabel dan data awal dalam tabel harus diletakkan di sini.
- onUpdate(): Dipanggil ketika database butuh diupgrade. Gunakan method ini untuk drop tabel ,tambah tabel, atau hal lainnya yang perlu diupgrade versi skema baru.
Jika kamu ingin menambahkan kolom gunakan ALTER TABLE untuk menambahkan colom baru ke dalam tabel dan jika kamu ingin rename atau remove kolom dapat juga menggunakan ALTER TABLE.
[AdSense-A]

3. Eksekusi Query (Execute Queries) dengan SQLiteDatabase

SQLiteDatabase memiliki method untuk create , delete ,eksekusi perintah SQL dan melakukan tugas-tugas manajemen database umum lainnya. Nama database harus unik dalam suatu aplikasi, tidak sama pada semua aplikasi. Untuk mengeksekusi perintah SQL gunakan public method dari class SQLiteDatabase berikut ini:

public void execSQL(String sql)


Method ini hanya bisa mengesekusi statement SQL tunggal tapi tidak untuk SELECT atau SQL statement lainnya yang mereturn data. Multiple Statment dengan memisahkan oleh semicolon(titik koma) tidak didukung oleh method ini. Jika string SQL tidak valid gunakan throws SQLException untuk penanganan error.

Implementasi onCreate

class RezaHelper extends SQLiteOpenHelper
{
	private static final String DATABASE_NAME="teknorialdatabase.db";
	private static final String TABLE_NAME ="teknorialtable";
	private static final String UID="_id";
	private static final String NAME="Nama";
	private static final int DATABASE_VERSION=1;
	RezaHelper(Context context)
	{
		super(context, DATABASE_NAME, null,DATABASE_VERSION);
	}
	public void onCreate(SQLiteDatabase db)
	{
		db.execSQL("CREATE TABLE teknorialtable (_id INTEGER PRIMARY KEY
			AUTOINCREMENT,Nama VARCHAR(255));");
	}catch(SQLException e){
		e.printStackTrace();
	}
	public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion)
	{
		
	}
}


Implementasi onUpdate

class RezaHelper extends SQLiteOpenHelper
{
	private static final String DATABASE_NAME="teknorialdatabase.db";
	private static final String TABLE_NAME ="teknorialtable";
	private static final String UID="_id";
	private static final String NAME="Nama";
	private static final int DATABASE_VERSION=1;
	RezaHelper(Context context)
	{
		super(context, DATABASE_NAME, null,DATABASE_VERSION);
	}
	public void onCreate(SQLiteDatabase db)
	{
	  ...
	}
	public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion)
	{
	   db.execSQL("DROP TABLE IF EXISTS teknorialtable");
		onCreate(db);	
	}
}

Tutorial membuat aplikasi database SQLite dengan Android Studio

1. Buat class baru dengan nama message.java dan ikuti kode berikut. class ini berguna untuk mendapatkan pesan yang bisa digunakan untuk melihat error pada statment SQL atau bisa juga melihat proses create dan upgrade database.

package com.teknorial.belajardatabase;

/**
 * Created by Teknorial on 22-Nov-15.
 */
import android.content.Context;
import android.widget.Toast;

public class Message {
    public static void message (Context context, String message)
    {
        Toast.makeText(context,message,Toast.LENGTH_LONG).show();
    }
}

2. Buat class baru yang menjadi subclass dari class SQLiteOpenHelper dengan nama RezaHelper.java.

package com.teknorial.belajardatabase;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;


/**
 * Created by Teknorial on 22-Nov-15.
 */
public class RezaHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME="teknorialdatabase";
    private static final String TABLE_NAME="teknorialtable";
    private static final String UID="_id";
    private static final String NAME="Nama";
    private static final int DATABASE_VERSION= 1;
    private static final String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+"("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+" VARCHAR(255));";
    private static final String DROP_TABLE="DROP TABLE  IF EXISTS "+TABLE_NAME;
    private Context context;
    public RezaHelper (Context context) {
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
        this.context=context;
        Message.message(context,"Constructor dipanggil");
    }

    @Override
    public void onCreate (SQLiteDatabase db) {
        try {
            db.execSQL(CREATE_TABLE);
            Message.message(context,"onCreate dipanggil");
        } catch (SQLiteException e){
            Message.message(context,""+e);
        }
    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion,int newVersion){
        try{
            Message.message(context,"onUpgrade dipanggil");
            db.execSQL(DROP_TABLE);
            onCreate(db);
        }catch (SQLiteException e){
            Message.message(context,""+e);
        }
    }
}

3. Modifikasi class MainActivity seperti berikut.

package com.teknorial.belajardatabase;


import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;


public class MainActivity extends Activity{
    RezaHelper rezaHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rezaHelper=new RezaHelper(this);
        SQLiteDatabase sqLiteDatabase = rezaHelper.getWritableDatabase();
    }

}

Jika aplikasi kita berhasil akan terlihat seperti screenshot dibawah.

constructor dipanggil

Constructor dipanggil


Pada saat pertama aplikasi diinstall akan muncul pesan onCreate dipanggil berarti database belum ada dan akan dibuat.
onCreate dipanggil

onCreate dipanggil


Untuk mencoba melihat proses upgrade database, ubahlah DATABASE_VERSION=1 menjadi DATABASE_VERSION=2, dan akan mencul pesan onUpgrade dipanggil dan disusul pesan onCreate dipanggil. Untuk pembahasan query SQLite lainnya seperti SELECT, INSERT dan lainnya akan menyusul.

Demikian artikel Membuat Database SQLite di Aplikasi Android. Ikuti terus teknorial.com untuk mengetahui banyak hal tentang pemrograman android. Jangan lupa untuk Like Fanspage Teknorial di Facebook dan Google Plus untuk mendapatkan update terbaru dari teknorial.com . Jika ada pertanyaan jangan ragu untuk bertanya dikotak komentar. Terima Kasih

Source Code : SQLiteDatabaseApp

Referensi:
SQLiteDatabase
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
Storage Options - SQLite Databases
http://developer.android.com/guide/topics/data/data-storage.html#db
Saving Data in SQL Databases
http://developer.android.com/training/basics/data-storage/databases.html

Tag