Android SQLite Database CRUD Tutorial (V) : Membuat Fungsi Delete Data

Akhirnya kita sampai pada postingan terakhir dari series tutorial membuat aplikasi CRUD di SQLite database Android. Sejauh ini, aplikasi inventaris barang kita sudah mempunyai fitur untuk tambah data, baca data, edit data. Pada postingan yang terakhir ini, kita akan membahas satu fitur yang belum kita implementasikan, yaitu fitur Delete data. Dan sesuai urutannya, Create, Read, Update, Delete, berarti ada tiga ditambah satu tutorial khusus yang harus kalian baca sebelum melanjutkan ke tutorial ini. Silahkan menuju halaman indeks Android SQLIte Database CRUD tutorial. Atau merujuk pada link prerequisites di bawah.

Pre Requisites

  • Tutorial membuat database SQLite Android (link)
  • Implementasi fitur Create Data (link)
  • Implementasi fitur Read Data (link)
  • Implementasi fitur Update Data (link)
  • Implementasi fitur Get Detail Data (link)

Membuat Fitur Delete data pada SQLIte Android

Langsung saja, seperti biasanya, kita akan menambahkan satu method baru pada kontroller DBDataSource.java. Satu method yang berfungsi untuk mendelete data tertentu pada database SQLite. Buka file DBDataSource.java, dan tambahkan kode berikut.

package id.twooh.appinventory;

import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class DBDataSource {

    //inisialiasi SQLite Database
    private SQLiteDatabase database;

    //inisialisasi kelas DBHelper
    private DBHelper dbHelper;

    //ambil semua nama kolom
    private String[] allColumns = { DBHelper.COLUMN_ID,
              DBHelper.COLUMN_NAME, DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA};

    //DBHelper diinstantiasi pada constructor
    public DBDataSource(Context context)
    {
        dbHelper = new DBHelper(context);
    }

    //membuka/membuat sambungan baru ke database
    public void open() throws SQLException {
        database = dbHelper.getWritableDatabase();
    }

    //menutup sambungan ke database
    public void close() {
        dbHelper.close();
    }

    //method untuk create/insert barang ke database
    public Barang createBarang(String nama, String merk, String harga) {

        // membuat sebuah ContentValues, yang berfungsi
        // untuk memasangkan data dengan nama-nama
        // kolom pada database
        ContentValues values = new ContentValues();
        values.put(DBHelper.COLUMN_NAME, nama);
        values.put(DBHelper.COLUMN_MERK, merk);
        values.put(DBHelper.COLUMN_HARGA, harga);

        // mengeksekusi perintah SQL insert data
        // yang akan mengembalikan sebuah insert ID
        long insertId = database.insert(DBHelper.TABLE_NAME, null,
            values);

        // setelah data dimasukkan, memanggil
        // perintah SQL Select menggunakan Cursor untuk
        // melihat apakah data tadi benar2 sudah masuk
        // dengan menyesuaikan ID = insertID
        Cursor cursor = database.query(DBHelper.TABLE_NAME,
            allColumns, DBHelper.COLUMN_ID + " = " + insertId, null,
            null, null, null);

        // pindah ke data paling pertama
        cursor.moveToFirst();

        // mengubah objek pada kursor pertama tadi
        // ke dalam objek barang
        Barang newBarang = cursorToBarang(cursor);

        //close cursor
        cursor.close();

        //mengembalikan barang baru
        return newBarang;
      }

    private Barang cursorToBarang(Cursor cursor)
    {
        // buat objek barang baru
        Barang barang = new Barang();
        // debug LOGCAT
        //Log.v("info", "The getLONG "+cursor.getLong(0));
        //Log.v("info", "The setLatLng "+cursor.getString(1)+","+cursor.getString(2));

        // Set atribut pada objek barang dengan
        // data kursor yang diambil dari database
        barang.setId(cursor.getLong(0));
        barang.setNama_barang(cursor.getString(1));
        barang.setMerk_barang(cursor.getString(2));
        barang.setHarga_barang(cursor.getString(3));

        //kembalikan sebagai objek barang
        return barang;
    }

    //mengambil semua data barang
    public ArrayList<Barang> getAllBarang() {
        ArrayList<Barang> daftarBarang = new ArrayList<Barang>();

        // select all SQL query
        Cursor cursor = database.query(DBHelper.TABLE_NAME,
            allColumns, null, null, null, null, null);

        // pindah ke data paling pertama
        cursor.moveToFirst();
        // jika masih ada data, masukkan data barang ke
        // daftar barang
        while (!cursor.isAfterLast()) {
          Barang barang = cursorToBarang(cursor);
          daftarBarang.add(barang);
          cursor.moveToNext();
        }
        // Make sure to close the cursor
        cursor.close();
        return daftarBarang;
      }

    //ambil satu barang sesuai id
    public Barang getBarang(long id)
      {
          Barang barang = new Barang(); //inisialisasi barang
          //select query
          Cursor cursor = database.query(DBHelper.TABLE_NAME, allColumns, "_id ="+id, null, null, null, null);
          //ambil data yang pertama
          cursor.moveToFirst();
          //masukkan data cursor ke objek barang
          barang = cursorToBarang(cursor);
          //tutup sambungan
          cursor.close();
          //return barang
          return barang;
      }

    //update barang yang diedit
    public void updateBarang(Barang b)
    {
        //ambil id barang
        String strFilter = "_id=" + b.getId();
        //memasukkan ke content values
        ContentValues args = new ContentValues();
        //masukkan data sesuai dengan kolom pada database
        args.put(DBHelper.COLUMN_NAME, b.getNama_barang());
        args.put(DBHelper.COLUMN_MERK, b.getMerk_barang());
        args.put(DBHelper.COLUMN_HARGA, b.getHarga_barang() );
        //update query
        database.update(DBHelper.TABLE_NAME, args, strFilter, null);
    }

	// delete barang sesuai ID
	public void deleteBarang(long id)
	{
		String strFilter = "_id=" + id;
		database.delete(DBHelper.TABLE_NAME, strFilter, null);
	}
}

Kode yang baru ada pada bagian yang di highlight, dan pada dasarnya kode itu hanya berfungsi untuk melakukan sebuah SQL query untuk delete data di database.

Menambahkan tombol Delete pada ViewData activity

Kemudian kita akan mengupdate kelas View Data, sebenarnya kita sudah mempunyai tombol delete pada dialog yang akan dimunculkan ketika kita melakukan long click pada data item. Yang harus kita lakukan sekarang adalah mengeset method yang akan dijalankan apabila tombol delete tersebut diklik. Ganti kode pada kelas ViewData.java dengan kode di bawah ini :

package id.twooh.appinventory;

import java.util.ArrayList;

import android.app.Dialog;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class ViewData extends ListActivity implements OnItemLongClickListener {

	//inisialisasi kontroller
	private DBDataSource dataSource;

	//inisialisasi arraylist
	private ArrayList<Barang> values;
	private Button editButton;
	private Button delButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      setContentView(R.layout.viewdata);
	      dataSource = new DBDataSource(this);
	      // buka kontroller
	      dataSource.open();

	      // ambil semua data barang
	      values = dataSource.getAllBarang();

	      // masukkan data barang ke array adapter
	      ArrayAdapter<Barang> adapter = new ArrayAdapter<Barang>(this,
	      android.R.layout.simple_list_item_1, values);

	      // set adapter pada list
	      setListAdapter(adapter);

	      // mengambil listview untuk diset onItemLongClickListener
	      ListView lv = (ListView) findViewById(android.R.id.list);
	      lv.setOnItemLongClickListener(this);

	}

	//apabila ada long click
	@Override
	public boolean onItemLongClick(final AdapterView<?> adapter, View v, int pos,
			final long id) {

		//tampilkan alert dialog
		final Dialog dialog = new Dialog(this);
		dialog.setContentView(R.layout.dialog_view);
		dialog.setTitle("Pilih Aksi");
		dialog.show();
		final Barang b = (Barang) getListAdapter().getItem(pos);
		editButton = (Button) dialog.findViewById(R.id.button_edit_data);
	    delButton = (Button) dialog.findViewById(R.id.button_delete_data);

	    //apabila tombol edit diklik
	    editButton.setOnClickListener(
				new OnClickListener()
				{
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						switchToEdit(b.getId());
						dialog.dismiss();
					}
				}
				);

		//apabila tombol delete di klik
		delButton.setOnClickListener(
				new OnClickListener()
				{
					@Override
					public void onClick(View v) {
						// Delete barang
						dataSource.deleteBarang(b.getId());
						dialog.dismiss();
						finish();
						startActivity(getIntent());
					}
				}
				);

		return true;

	}

	public void switchToEdit(long id)
	{
		Barang b = dataSource.getBarang(id);
		Intent i = new Intent(this, EditData.class);
		Bundle bun = new Bundle();
		bun.putLong("id", b.getId());
		bun.putString("nama", b.getNama_barang());
		bun.putString("merk", b.getMerk_barang());
		bun.putString("harga", b.getHarga_barang());
		i.putExtras(bun);
		finale();
		startActivity(i);
	}

	public void finale()
	{
		ViewData.this.finish();
		dataSource.close();
	}
	@Override
	protected void onResume() {
		dataSource.open();
		super.onResume();
	}

	@Override
	protected void onPause() {
	    dataSource.close();
	    super.onPause();
	}

}

Kode yang baru ada pada bagian yang di-highlight. Sekarang apabila kalian jalankan aplikasinya dan mengklik tombol delete, maka method deleteBarang() pada controller akan dipanggil, dan data yang dimaksud akan dihapus dari database.

Demo Video

Well, hanya itu yang perlu ditambahkan. 😀 Dengan demikian series tutorial ini saya nyatakan selesai. Untuk demo-nya, kalian bisa cek dan download (tentu saja) AppInventory di Google Play Store. Bagi yang belum mengerti, silahkan tinggalkan komentar. 😉 Semoga bermanfaat.

UPDATE : menghapus kode AdView dan AdRequest yang menimbulkan pertanyaan dari kode.

42 Comments

  1. mekanik komputer February 21, 2013
  2. tiyan March 31, 2013
  3. Yusup May 30, 2013
    • Herdi Naufal May 30, 2013
      • dedik December 10, 2014
        • Hafizh Herdi Naufal December 11, 2014
  4. mizan July 7, 2013
  5. mizan July 13, 2013
    • Hafizh Herdi Naufal July 14, 2013
      • mizan July 14, 2013
      • anton May 24, 2016
        • Hafizh Herdi May 25, 2016
  6. iqbal September 24, 2013
    • Hafizh Herdi Naufal September 25, 2013
  7. Adi November 29, 2013
  8. fen December 6, 2013
    • fen December 6, 2013
      • Hafizh Herdi Naufal December 6, 2013
  9. lisna February 10, 2014
  10. VerlyAnadna March 9, 2014
    • Hafizh Herdi Naufal March 9, 2014
      • VerlyAnanda March 9, 2014
  11. argy April 15, 2014
  12. hizkia lucas May 16, 2014
  13. morten June 9, 2014
  14. Seno July 5, 2014
  15. Stefanus Anggara January 18, 2015
  16. jenn paccard February 17, 2015
  17. amien May 12, 2015
  18. Syarief H. December 11, 2015
    • Reza January 24, 2016
  19. anton May 20, 2016
  20. shandi himawan August 17, 2016
  21. Ardy September 5, 2016
  22. roman suxes January 13, 2017
  23. Esa Prasetio April 18, 2017

Leave a Reply

Do NOT follow this link or you will be banned from the site!