Wednesday, January 30, 2013

Pada bagian ini kita akan membahas tentang database, Android juga memiliki fasilitas untuk membuat database yang dikenal dengan SQLite, SQLite adalah salah satu software yang embedded yang sangat populer, kombinasi SQL interface dan penggunaan memory yang sangat sedikit dengan kecepatan yang sangat cepat. SQLite di android termasuk dalam Android runtime, sehingga setiap versi dari android dapat membuat database dengan SQLite.
Dalam sistem android memiliki beberapa teknik untuk melakukan penyimpanan data. Teknik yang umum digunakan adalah sebagai berikut :
  • Shared Prefences yaitu menyimpan data beberapa nilai(value) dalam bentuk groups key yang dikenal dengan prefences.
  • Files yaitu menyimpan data dalam file, dapat berupa menulis ke file atau membaca dari file.
  • SQLite Databases, yaitu menyimpan data dalam bentuk Databases.
  • Content Providers, yaitu menyimpan data dalam bentuk content providers service.
Dan pada bagian ini kita akan fokus membahas bagian databases. Tidak ada database yang otomatis disediakan oleh android, jika kita menggunakan SQLite, kita harus mengcreate database sendiri, mendefenisikan tabelnya, index serta datanya. Untuk membuat dan membuka database yang paling baik adalah menggunakan libraries import android.database.sqlite.SQLiteOpenHelper
Aplikasi database1
Pada aplikasi database1 ini, akan kita coba membuat database,tabel serta menyimpan data ke dalam database. Buatlah project baru seperti ketentuan berikut :
Project Name : database1
Buitl Target : Android 2.3
Application name : database1
Package name : com.wilis.database1
Activity : database1
Min SDK : 9
Terdiri dari dua buah file java yaitu DBAdapter.java yang menghandle masalah SQLite beserta fungsi-fungsi yang dibutuhkan seperti struktur dan sekema database dan database1.java yang digunakan untuk melakukan pengiriman data yang akan ditambahkan ke database, membuka, mengedit, memanipulasi database.

DBAdapter.java


package com.wilis.database1;

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

public class DBAdapter
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_ISBN = "isbn";
    public static final String KEY_TITLE = "title";
    public static final String KEY_PUBLISHER = "publisher";
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "books";
    private static final String DATABASE_TABLE = "titles";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table titles (_id integer primary key autoincrement, "
        + "isbn text not null, title text not null, "
        + "publisher text not null);";

    private final Context context;

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
        int newVersion)
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion
                    + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }

    //---opens the database---
    public DBAdapter open() throws SQLException
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---
    public void close()
    {
        DBHelper.close();
    }

    //---insert a title into the database---
    public long insertTitle(String isbn, String title, String publisher)
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ISBN, isbn);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_PUBLISHER, publisher);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    //---deletes a particular title---
    public boolean deleteTitle(long rowId)
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID +
          "=" + rowId, null) > 0;
    }

    //---retrieves all the titles---
    public Cursor getAllTitles()
    {
        return db.query(DATABASE_TABLE, new String[] {
          KEY_ROWID,
          KEY_ISBN,
          KEY_TITLE,
                KEY_PUBLISHER},
                null,
                null,
                null,
                null,
                null);
    }

    //---retrieves a particular title---
    public Cursor getTitle(long rowId) throws SQLException
    {
        Cursor mCursor =
                db.query(true, DATABASE_TABLE, new String[] {
                  KEY_ROWID,
                  KEY_ISBN,
                  KEY_TITLE,
                  KEY_PUBLISHER
                  },
                  KEY_ROWID + "=" + rowId,
                  null,
                  null,
                  null,
                  null,
                  null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //---updates a title---
    public boolean updateTitle(long rowId, String isbn,
    String title, String publisher)
    {
        ContentValues args = new ContentValues();
        args.put(KEY_ISBN, isbn);
        args.put(KEY_TITLE, title);
        args.put(KEY_PUBLISHER, publisher);
        return db.update(DATABASE_TABLE, args,
                         KEY_ROWID + "=" + rowId, null) > 0;
    }
}



sementara Database1.java berisi data yang akan kita coba test input ke database.
Database1.java

package com.wilis.database1;

import android.app.Activity;
import android.os.Bundle;

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

        DBAdapter db = new DBAdapter(this);

        //---add 3 titles---
        db.open();
        long id;
        id = db.insertTitle(
          "1234512345",
          "Android Programmer's Reference",
          "Washington Press");
        id = db.insertTitle(
          "5432112345",
          "Linux Programming",
          "Bandung Press");
        id = db.insertTitle(
          "0987654321",
          "Android Devlopment Life Cycle",
          "Hongkong Press");
        db.close();
    }

}



Jalankan aplikasi dan coba buka database yang di insertkan dengan tools misalnya SQLite managers dari add-ons nya mozilla sehingga anda dapat melihat datanya seperti berikut :

Selanjutnya kita akan coba buat input form untuk memasukkan data ke dalam database,
persiapkan form seperti berikut :


 
customerjava.com
 

package com.wilis.databaseapp;

public class Customer {

 long id;
 String name;
 String address;
 String phone;
 boolean complete;

 public long getId() {
  return id;
 }
 public void setId(long id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 public String getPhone() {
  return phone;
 }
 public void setPhone(String phone) {
  this.phone = phone;
 }
 public boolean isComplete() {
  return complete;
 }
 public void setComplete(boolean complete) {
  this.complete = complete;
 }

 // -------------------------------------------
 public void toggleComplete() {
  complete = !complete;
 }

}
kemudian file CustomerSQLHelper untuk handle SQLite seperti contoh diatas,
karena masih banyak file javanya sebaiknya anda donwload sourcode nya aja langsung
Download Full Sourcode DatabaseApps
Jalankan aplikasi setelah melakukan input akan ditampilkan seperti gambar berikut :

Demikian,
ini adalah contoh aplikasi simple mengenai SQLite, walaupun ini cerita jadul, tapi tetap menarik untuk dipahami oleh developer android.

sumber : http://nsafaat.wordpress.com/2011/11/16/tuturial-databaseaps-sqlite/

1 comments:

  1. This comment has been removed by a blog administrator.

    ReplyDelete