Rabu, 16 Mei 2012

SQLite Pada Android

Pada tutorial kali ini kita akan membahas tentang management database menggunakan SQLite pada Android, SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Referansi SQLite http://id.wikipedia.org/wiki/SQLite

Beruntung android sudah meyertakan API SQLite jadi kita tidak perlu mendownload API nya lagi, lets we begin.

Project Struktur

Pertama kita buat databasenya beri nama DatabaseHelper.java
package com.samz.sqlite;

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

public class DatabaseHelper extends SQLiteOpenHelper {

 public static final String DATABASE_NAME = "employee_directory";
 private final static String TABLES[] = { "id","name" };

 public DatabaseHelper(Context context) {
  super(context, DATABASE_NAME, null, 1);
 }

 @Override
 public void onCreate(SQLiteDatabase db) {

 }

 public void createEmployeeTable(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE if not exists employee (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);");
 }

 public void insertData(SQLiteDatabase db, String name) {
  ContentValues contentValues = new ContentValues();
  contentValues.put("Name", name);
  db.insert("employee", null, contentValues);
 }

 public void editData(SQLiteDatabase db, String name) {
  ContentValues contentValues = new ContentValues();
  contentValues.put("name", name);
  db.update("employee", contentValues, "name =" + name, null);
 }

 public void deleteData(SQLiteDatabase db, String name) {
  db.delete("employee", "name =" + name, null);
 }

 public Cursor getAll(SQLiteDatabase db) {
  return db.query("employee", TABLES, null, null, null, null, null);
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  //db.execSQL("DROP TABLE IF EXISTS employee");
  //onCreate(db);
 }

}

Lalu kita buat UI-nya, disini kita masukan TextBox, Button simpan dan ListView (untuk menampilkan data)
modifikasi main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
  <TextView 
      android:id="@+id/idText"
      android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="test"
         android:visibility="gone"/>
        <EditText
            android:id="@+id/nameText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/name" >
        </EditText>
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save" >
    </Button>
    <Button
        android:id="@+id/btnUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/update" >
    </Button>
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>
Pada code diatas terlihat android:text="@string/save ini mangacu pada file strings.xml untuk mencegah hardcode, file srings.xml


    Nama
    Simpan
    SQLite Test


Lalu disinilah logic nya
ListViewActivity.java
package com.samz.sqlite;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.Toast;

public class ListViewActivity extends ListActivity {

 protected EditText nameText;
 protected Button btnSave;
 protected SQLiteDatabase db;
 protected DatabaseHelper dbHelper;
 protected ListAdapter adapter;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  dbHelper = new DatabaseHelper(this);
  db = dbHelper.getWritableDatabase();
  dbHelper.createEmployeeTable(db);

  nameText = (EditText) findViewById(R.id.nameText);
  btnSave = (Button) findViewById(R.id.btnSave);

  getAll();
  buttonEvenListener();

 }

 private void buttonEvenListener() {
  btnSave.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    String names = nameText.getText().toString().trim();
    dbHelper.insertData(db, names);
    Toast.makeText(ListViewActivity.this, "Success",
      Toast.LENGTH_SHORT).show();
    nameText.setText("");
    getAll();
   }
  });
 }

 private void getAll() {
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, getAllDatas());
  setListAdapter(adapter);
 }

 public List<String> getAllDatas() {
  List<String> names = new ArrayList<String>();
  Cursor cursor = dbHelper.getAll(db);

  cursor.moveToFirst();
  while (!cursor.isAfterLast()) {
   String name = cursor.getString(1);
   names.add(name);
   cursor.moveToNext();
  }
  // close cursor
  cursor.close();
  Collections.sort(names);
  return names;
 }

}

Run, Run As "Android Application", lalu akan muncul sebagai berikut

Untuk dapat melihat data yang sudah tersimpan, kita dapat melihatnya di SQLite Manager ini digunakan pada browser firefox. Link untuk adds on SQLite Manager mozilla disini atau dapat dibrowse langsung dari mozilla. Setelah selesai di install untuk membuka aplikasinya pilih di mozilla menu Tools > SQLite Manager, akan tampil sbb

Bagaimana cara mengunakannya? pertama Pull database terlebih dahulu Open perspective di eclipse lalu Window > Show View > Other > Android lalu pilih File Explorer, database tersimpan di folder /data/data/your.app.package/databases/your-db-name lalu klik dipojok kanan atas Pull a file from a device lalu Save.
Selesai disave pada SQLite Manager pilih Database > Connect Database pilih file yang di Pull
Selamat Mencoba semoga bermanfaat
Download Source Code disini
Kunjungi situs kami di PT Samz Solution

Tidak ada komentar:

Posting Komentar