Android | Belajar SQLite Database sederhana

nah lagi belajar Database SQLite buat Android nih , sekalian isi di blog aja biar tambah banyak artikel'nya hehehehe
bila belum tau SQLite bisa baca artikel sebelum'nya  di sini

sebelum memulai membuat aplikasi , ada 3 kelas yang harus di ketahui yaitu :
    1. SQLiteDatabase
    SQLiteDatabase merupakan sebeuah kelas yang mempunya method-method seperti :
Insert() = untuk menambahkan baris ke database 
Update () = untuk memperbarui baris pada database  
Delete ()  = untuk menghapus baris pada database
execSQL ()  = untuk mengeksekusi sintak SQL

    2. SQLiteOpenHelper
    SQLiteOpenHelper adalah subclass yang memiliki beberapa method seperti :
onCreate()          = di jalankan jika sebelum'nya belum ada database 
onUpgrade()  = di jalankan jika sebelum'nya sudah di temukan database yang sama 
   tapi beda versi, method ini bisa di manfaatkan untuk mengubah sekema database
onOpen()  = di jalankan jika database dalam keadaan open
getWritableDatabase()  = memanggil database agar bisa di masuki data
getReadableDatabase() = memanggil database agar bisa dibaca data'nya

3. Cursor
    Setiap Query yang di eksekusi pasti membawa nilai kembalian atau feedback. Feedbeck yang dihasilkan query ini,
    jadi dengan kata lain cursor merepresentasikan hasil query yang di eksekusi pada baris dan kolom tertentu
    beberapa ini method yang di gunakan untuk latihan ini :
moveToFirst()  = untuk indah ke baris pertama
isAfterLast () = akan mengirim pesan balik jika posisi cursor sudah berada di baris terakhir
getLong() = untuk mengambil data pada kolom yang mempunyai tipe data Long
getString() = untuk mengambil data pada kolom yang mempunyai tipe data String

Nah bila sudah tau , Langsung saja deh ,
saya sudah sediakan screenshoot tampilan'nya


screenshoot

  • Buat Project baru dengan nama BelajarDB
  • Buka activity_main.xml : buat 2 buah EditText + 1 Button + 1 TableLayout 
   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Masukkan nama dan sekolah" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/inama"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="nama" />

        <EditText
            android:id="@+id/isekolah"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="sekolah" />

    </LinearLayout>

    <Button
        android:id="@+id/btambah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="150dp"
        android:text="tambah" />

    <TableLayout android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:id="@+id/tabel_data">
        <TableRow android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView android:layout_height="wrap_content"
                android:layout_width="50dip"
                android:text="no"
                android:id="@+id/no_id"></TextView>
            <TextView android:layout_height="wrap_content"
                android:layout_width="100dip"
                android:text="nama"
                android:id="@+id/nama_id"></TextView>

            <TextView
                android:id="@+id/hobi_id"
                android:layout_width="100dip"
                android:layout_height="wrap_content"
                android:text="sekolah" >
</TextView>
        </TableRow>
    </TableLayout>

</LinearLayout>

  • membuat Class baru beri nama TempatDatabase.java : lalu beri code seperti di bawah ini , dan lihat pengertian" yang sudah saya buatkan 
   
package com.example.belajardb;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class TempatDatabase {
 //mendeklarasikan ROW
 private static final String ROW_ID = "_id";
 private static final String ROW_NAMA = "nama";
 private static final String ROW_SEKOLAH = "sekolah";
 //mendeklarasikan NAMA_DB DAN TABLE DAN DATABASE VERSION
 private static final String NAMA_DB ="INIDB";
 private static final String NAMA_TABEL="percobaan";
 private static final int DB_VERSION=1;
 //mendeklarasikan CREATE_TABLE = MEMBUAT TABLE" 
 private static final String CREATE_TABLE = 
 "create table "+NAMA_TABEL+" ("+ROW_ID+" integer PRIMARY KEY autoincrement, "+ROW_NAMA+" text,"+ROW_SEKOLAH+" text)";
 //membuat mendeklarasikan itu adalah context
 private final Context context;
 //membuat mendeklarasikan DatabaseOpenHelper itu adalah dbhelper
 private DatabaseOpenHelper dbhelper;
 //membuat mendeklarasikan SQLiteDatabase itu adalah db
 private SQLiteDatabase db;
 
 //mengambil context untuk mengakses system di android
 public TempatDatabase(Context ctx) {
  //mendeklarasikan ctx adalah context ( context context di ganti ctx )
  this.context = ctx;
  // membuat DatabaseOpenHelper 
  dbhelper = new DatabaseOpenHelper(context);
  //menuliskan DatabaseOpenHelper = SQLiteDatabase
  db = dbhelper.getWritableDatabase();
 } 
 private static class DatabaseOpenHelper extends SQLiteOpenHelper {
   //membuat database
  public DatabaseOpenHelper(Context context) {
   super(context, NAMA_DB, null, DB_VERSION);
   // TODO Auto-generated constructor stub
  }
 
  @Override
  public void onCreate(SQLiteDatabase db) {
   // TODO Auto-generated method stub
   db.execSQL(CREATE_TABLE);
  }
  //memperbarui database bila sudah ada 
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) {
   // TODO Auto-generated method stub
   db.execSQL("DROP TABLE IF EXISTS "+NAMA_DB);
   onCreate(db);
 
  }
 }
 //menutup DatabaseOpenHelper
 public void close() {
  dbhelper.close();
 }
 //menambahkan pada row
 public void addRow(String nama, String sekolah) {
   
  ContentValues values = new ContentValues();
  values.put(ROW_NAMA, nama);
  values.put(ROW_SEKOLAH, sekolah);
 
  try {
   //menambahkan nama tabel bila tidak akan error
  // db.delete(NAMA_TABEL, null, null);
   db.insert(NAMA_TABEL, null, values);
  } catch (Exception e) {
   Log.e("DB ERROR", e.toString());
   e.printStackTrace();
  }
 }
 //membuat array pada table layout
 public ArrayList<ArrayList<Object>> ambilSemuaBaris() {
  ArrayList<ArrayList<Object>> dataArray = new ArrayList<ArrayList<Object>>();
  Cursor cur;
  try {
   cur = db.query(NAMA_TABEL,
     new String[] { ROW_ID, ROW_NAMA, ROW_SEKOLAH }, null, null,
     null, null, null);
   cur.moveToFirst();
   if (!cur.isAfterLast()) {
    do {
     ArrayList<Object> dataList = new ArrayList<Object>();
     dataList.add(cur.getLong(0));
     dataList.add(cur.getString(1));
     dataList.add(cur.getString(2));
 
     dataArray.add(dataList);
 
    } while (cur.moveToNext());
 
   }
 
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   Log.e("DEBE ERROR", e.toString());
  }
  return dataArray;
 
 }
}

  • Lalu Buka MainActivity.java dan ketikan kode seperti dibawah ini :
   
package com.example.belajardb;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
 //mendeklarasikan 
 TempatDatabase dm;
 EditText inama, isekolah;
 Button btambah;
 TableLayout tabel4data;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //mengkaitkan TempatDatabase ke MainActivity 
  dm = new TempatDatabase(this);
   tabel4data = (TableLayout) findViewById (R.id.tabel_data);
  inama = (EditText) findViewById(R.id.inama);
  isekolah = (EditText) findViewById(R.id.isekolah);
  btambah = (Button) findViewById(R.id.btambah);
  //membuat onclick pada tombol button btambah
  btambah.setOnClickListener(new View.OnClickListener() {
   @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   //menjalankan simpandata(); yang nanti akan di buat
   simpanData();
  }
 });
  //mengupdate table bila data sudah di simpan
  updateTable();
  
 }

 private void updateTable() {
  // TODO Auto-generated method stub
  // TODO Auto-generated method stub
    while (tabel4data.getChildCount() > 1) {
     tabel4data.removeViewAt(1);
    }
    double aa = tabel4data.getChildCount();
    String a = String.valueOf(aa);
    Toast.makeText(getBaseContext(), "tabel data child : " + a,
      Toast.LENGTH_SHORT).show();
   
    ArrayList<ArrayList<Object>> data = dm.ambilSemuaBaris();//
   
    for (int posisi = 0; posisi < data.size(); posisi++) {
     TableRow tabelBaris = new TableRow(this);
     ArrayList<Object> baris = data.get(posisi);
   
     TextView idTxt = new TextView(this);
     idTxt.setText(baris.get(0).toString());
     tabelBaris.addView(idTxt);
   
     TextView namaTxt = new TextView(this);
     namaTxt.setText(baris.get(1).toString());
     tabelBaris.addView(namaTxt);
   
     TextView hobiTxt = new TextView(this);
     hobiTxt.setText(baris.get(2).toString());
     tabelBaris.addView(hobiTxt);
   
     tabel4data.addView(tabelBaris);
   
    }
   }
 

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
 //membuat simpan data bila tombol buton di jalankan
 private void simpanData() {
  // TODO Auto-generated method stub
  try {
   dm.addRow(inama.getText().toString(), isekolah.getText().toString());
   Toast.makeText(getBaseContext(),
   inama.getText().toString() + ", berhasil disimpan",
   Toast.LENGTH_SHORT).show();
   updateTable();
   //mengkosongkan field yang akan di buat di bawah
   kosongkanField();
   } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     Toast.makeText(getBaseContext(), "gagal simpan, " + e.toString(),
       Toast.LENGTH_LONG).show();
    }
 }
 //membuat kosong pada text bila sudah di jalankan penyimpanan
 private void kosongkanField() {
  // TODO Auto-generated method stub
  inama.setText("");
  isekolah.setText("");
 }

}
 

Nah setelah itu coba di jalankan bila mengikuti cara di atas akan Sukses :v hahaha



dan ini nih project jadi nya

20 comments

Om...cobain multiple table di SQLite... :)

Reply

gan... kalau android conect ke mySQL bisa ga ya..?

Reply

bisa om , konek ke mySQL

Reply
This comment has been removed by the author.

gan.. itu nanti databasenya disimpen dmn? (path.nya)

Reply

Terima kasih sob,
saya pelajari dulu, ijin comot source codenya :)

Reply

langsung di simpen di hp'nya sqlite

Reply

monggo sob ,
sering" mampir ya hehe

Reply

ka,, saya punya studi kasus memakai programnya kaka yg ini..
kalo misal nya saya nambain row 1 uang saku , dan nnti nya banyak inputan uang saku di jumlahin ka..
itu gmn ya ka ?

Reply

tq infonya.

folback http://perumnas3.blogspot.com/

kunjungan balik.

Reply

bagus sekali. saya juga punya artikel dan tutorial terkait dengan SQLite. semoga bisa menjadi bahan belajar juga untuk pemula
http://udinulis.blogspot.com/2010/02/sqlite-si-simple-yang-bertenaga.html

Reply

Tutarni : Terima kasih atas tutorial yang sangat bermanfaat, saya akan mencoba semoga berhasil, mohon dibanyakin lagi tutorialnya ya...

Reply

mksh om, its work

Reply

Pengertian dari Database Helper itu apa yah...?

Reply

Terima kasih. Ini sangat membantu

Reply

Terima kasih. Ini sangat membantu

Reply

Post a Comment

notifikasi
close