About Me

Agus Haryanto,
Android Trainner,
GoogleMaps (JavaScript) Trainer
JQuery and JQuery Mobile Trainer
Java, Java Script and PHP Trainer
Freelance Developer Android
Freelance Developer Blackberry
Freelance Developer Web (GIS Googlemaps)
Freelance Developer SMS Gateway

jika ingin contact saya bisa emali ke agus.superwriter@gmail.com

ym: agus_h23

Pin BB : 2AD38B33

Facebook : Agus Haryanto


Article

Belajar Android Pengenalan Database Android bersama Agus Haryanto

Jumpa lagi dengan Agus Haryanto, dalam seri belajar android, kali ini kita akan membahas penggunaan fitur database android.

Kalau kita baca spesifikasi OS android ini, maka salah satu fitur yang ditawarkan adalah kita dapat membuat database di android yaitu dengan menggunakan SQLite. Jadi kita bisa membuat aplikasi seperti yang ada di computer walaupun tidak persis sama karena computer memiliki resource yang lebih besar.

Dulu waktu belajar J2ME kita jika ingin menyimpan data diaplikasi kita, kita menggunakan Recors Store (RMS). Dimana dalam inserting data dan query data membutuhkan effort coding yang lumayan

Agar semangat belajarnya, dalam mempelajari sesuatu hendaknya kita selalu bertanya dalam diri, kalau dalam hal ini pertanyaan yang harus diajukan adalah :

1. Untuk apasih belajar penggunaan database di android?

Kalau yang ini simple jawabnya, yah supaya bisa membuat aplikasi yang memnafaatkan fungsi database diandroid

2. Kalau sudah menguasai, apa manfaatnya buat saya ?

Dengan database kita bisa membuat banyak aplikasi yang bermanfaat. Seperti.

-         Point Of Sales (POS) bahasa indonesianya aplikasi penjualan.
Kita bisa menyimpan data product yang kita jual dan transaksi penjualannya. Dengan adanya data kita bisa membuat report penjualannya bisa dalam bentuk table, list, bisa graphic (chart) juga lho.

-         Aplikasi buat pendukung bisnis Cuci Mobil / Motor
Pernah cuci motor atau mobilkan, nah lihat pas kita bayar, kasirnya nyatatnya pakai buku atau pakai computer kalau pakai computer lihat masih pakai excel atau sudah aplikasi. Nah kalau masih pakai buku atau excel ada peuang tuh, kita tawarkan aplikasi android untuk mencatat pendapatan.

-         Kalau 2 contoh diatas kurang keren, berarti anda butuh tantangan lebih, buatlah apalikasi mobile yang merupakan client dari sebuah server. Kalau jaringan internet ada dan lancar tentu ini mudah saja, nah sekarang kita dituntut untuk develop aplikasi yang mampu mengatasi hal ini, artinya dalam kondisi internet matipun aplikasi masih dapat digunakan dan nanti setelah internetnya hidup data transaksi offline tadi akan dikirim ke server. Nah untuk mewujudkan itu kita perlu database  diaplikasi mobile kita untuk menyimpan data transaksi yang terjadi pada waktu offline.

-         Untuk yang pernah main Game pasti pernah merasa bangga kalau namanya masuk dalam daftar highest score. Nah database dapat kita manfaatkan untuk menyimpan daftar tersebut.

Banyakkan manfaatnya, kalau gitu sekarang semangatnya tambah 10 kali lipat hehehe :)

Bahan bakar semangat telah ditambah sekarang waktunya action.

SQLite

Seperti telah dijelaskan diatas database pada android menggunakan SQLite. Dengan SQLite untuk insert, update dan query data dapat dilakukan dengan syntak SQL.

Untuk itu sebelum melangkah pembuatan aplikasi Android yang memanfatkan firtur SQlite databasenya, kita harus menguasai cara menggunakan SQLite.

Sama seperti database lainnya syntak SQLnya terbagi 2 kategori yaitu syntak untuk Data Definition Language (DDL) dan Data Manipulation Language (DML). Bagi yang pernah belajar database pasti tidak asing dengan kedua istilah tersebut.

Sekarang ada pertanyaan nih apa beda DDL  dan DML ?

Biar mudah dipahami, kalau database itu kita ibaratkan sebuah rumah, maka DDL itu adalah syntax untuk membuat rumah, menambah kamar, merubah bangunan rumah, makanya yang termasuk syntak-syantak DDL adalah create table, alter table, drop table.

sedangkan DML adalah syntax untuk mengetahui isi rumah, siapa saja penghuninya, berapa jumlahnya, ada berapa yang pria dan yang wanita, adakah anak-anak dirumah itu.

Makanya yang termasuk syntak-syntak DML adalah insert, update, delete, select

Untuk mengetahui lebih lanjut tentang sqlite bisa kunjungi SQLite Home Page

Sekarang mari kita buat project yang menggunakan database sqlite di android. Dulu sebelum pakai android dihandphone yang dulu pasati pernah install kamus inggris Indonesia, yang kita gunakan untuk mencari terjemahan suatu kata dalam bahasa inggris ke bahasa Indonesia. Sebetulnya diandroid juga sudah ada yang buat. Tetapi tentunya akan lebih puas jika kita buat sendiri.

Mari kita mulai langkah-langkahnya

1. Buat New Project dengan nama Kamus, lengkapi seperti gambar dibawah


2. Setelah project tercreate maka secara otomatis android membentuk 3 file yaitu :
·        main.xml
·        string.xml
·        showKamus.java

3. untuk membuat user interfacenya, bukafile main.xml lalu ketikkan kode berikut

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">

	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="Kamus Inggris Indonesia" />
	<TextView android:text="Inggris :" android:id="@+id/TextView01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:text="" android:id="@+id/txtInggris"
		android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
	<Button android:text="Terjemahkan" android:id="@+id/btnTerjemah"
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:onClick="getTerjemahan"></Button>
	<TextView android:text="Indonesia :" android:id="@+id/TextView03"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:text="" android:id="@+id/txtIndonesia"
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:editable="false"></EditText>

</LinearLayout>

Kode diatas akan menghasilkan user interface kamus bahasa inggris Indonesia yang terdiri dari inputan untuk memasukkan kata bahasa inggris, tombol yang apabila dilik nantinya akan mencari terjemahan dari kata bahasa inggris tersebut ke bahasa Indonesia dane menampilkannya.

4. Untuk pembuatan databasenya kita buat class baru yang mengeksten class SQLiteOpenHelper dengan
nama DataKamus.java, kemudian ketikkan kode berikut

package com.agus;

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

public class DataKamus extends SQLiteOpenHelper {
	private static final String DATABASE_NAME = "dbkamus";
	public static final String INGGRIS= "inggris";
	public static final String INDONESIA = "indonesia";

	//Constructor DataKamus untuk initiate database
	public DataKamus(Context context) {
		super(context, DATABASE_NAME, null, 1);
	}

	//method createTable untuk membuat table kamus
	public void createTable(SQLiteDatabase db){
		db.execSQL("DROP TABLE IF EXISTS kamus");
		db.execSQL("CREATE TABLE if not exists kamus (id INTEGER PRIMARY KEY AUTOINCREMENT, inggris TEXT, indonesia TEXT);");
	}

	//method generateData untuk mengisikan data ke kamus.
	public void generateData(SQLiteDatabase db){
		ContentValues cv=new ContentValues();
		cv.put(INGGRIS, "run");
		cv.put(INDONESIA, "lari");
		db.insert("kamus", INGGRIS, cv);
		cv.put(INGGRIS, "walk");
		cv.put(INDONESIA, "jalan");
		db.insert("kamus", INGGRIS, cv);
		cv.put(INGGRIS, "read");
		cv.put(INDONESIA, "membaca");
		db.insert("kamus", INGGRIS, cv);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
	}
}

Pada class DataKamus, disinilah kita membuat databasenya, membuat table dan mengisikan data pada table
(kode diatas akan menginsertkan 3 record data) tersebut.


5. sekarang mari kita kerjakan otak dari aplikasi kamus ini, buka file showKamus.java,
kemudian ketikkan kode berikut

package com.agus;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class showKamus extends Activity {

    private SQLiteDatabase db = null;
	private Cursor kamusCursor = null;
	private EditText txtInggris;
	private EditText txtIndonesia;
	private DataKamus datakamus = null;
	public static final String INGGRIS = "inggris";
	public static final String INDONESIA = "indonesia";

	 /** Called when the activity is first created. */
    @Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		datakamus = new DataKamus(this);
		db = datakamus.getWritableDatabase();
		datakamus.createTable(db);
		datakamus.generateData(db);

		setContentView(R.layout.main);
		txtInggris = (EditText) findViewById(R.id.txtInggris);
		txtIndonesia = (EditText) findViewById(R.id.txtIndonesia);

	}

	public void getTerjemahan(View view) {
		String result = "";
		String englishword = txtInggris.getText().toString();
		kamusCursor = db.rawQuery("SELECT ID, INGGRIS, INDONESIA "
				+ "FROM kamus where INGGRIS='" + englishword
				+ "' ORDER BY INGGRIS", null);

		if (kamusCursor.moveToFirst()) {
			result = kamusCursor.getString(2);
			for (; !kamusCursor.isAfterLast(); kamusCursor.moveToNext()) {
				result = kamusCursor.getString(2);
				}
		}
		if (result.equals("")) {
			result = "Terjemahan Not Found";
		}
		txtIndonesia.setText(result);

	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		kamusCursor.close();
		db.close();
	}
}

pada method onCreate, disini kita membuat object datakamus dari class DataKamus dari object
tersebut kita call method datakamus.createTable(db); dan datakamus.generateData(db);

setelah kita call kedua method diatas maka table dan datanya sudah siap

Method getTerjemahan akan dipanggil pada saat kita mengklik tombol Terjemahkan.

Pada Method ini kita tangkap inputan kata bahasa inggrisnya dari object txtInggris
kemudian kita lakukan query ke table kamus dan menampilkan hasilnya pada object txtIndonesia.

6. Mari kita run projectnya, pada inputan Inggris, kita isi dengan run
kemudian klik tombol Terjemahkan

Wow, keren dengan koding yang singkat kita bisa membuat aplikasi kamus inggris Indonesia,
yang mungkin dulu kita hanya bisa bertanya bagaimmana cara membuatnya dan hanya bisa bermimpi
dapat mebuatnya. Sekarang kita bisa buat sendiri dengan android. My Dream Come True

Jika baru mulai belajar android dianjurkan untuk membaca tutorial
Aplikasi Android Sederhana - Menghitung Luas Persegi Panjang

referensi:

http://developer.andorid.com

Beginning Android 2

Semoga Bermanfaat

Salam Hangat

Agus Haryanto

Kode diatas akan menghasilkan user interface kamus bahasa inggris Indonesia yang terdiri dari inputan untuk memasukkan kata bahasa inggris, tombol yang apabila dilik nantinya akan mencari terjemahan darai kata bahasa inggris tersebut ke bahasa Indonesia dane menampilkannya.

Share

188 comments to Belajar Android Pengenalan Database Android

  • bang ane mau tny lo lihat2 di be2rapa totorial android itu buat databasenya pake script di dikelas n buatnya di eclipse lagsung kaya gini :
    \public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = “CREATE TABLE ” + TABLE_CONTACTS + “(”
    + KEY_ID + ” INTEGER PRIMARY KEY,” + KEY_NAME + ” TEXT,”
    + KEY_PH_NO + ” TEXT” + “)”;
    db.execSQL(CREATE_CONTACTS_TABLE);
    }

    # Yang jd pertanyaannya lo kita buat di sqllitemanager bisa g diakses di android lgsg? sama minta samplenya dong?
    Syukron bang.

  • darwin

    kk kalau kosa katanya di tambah dari luar database nya di buat gimana kk

  • Agus Haryanto

    @wahyu, bisa.

  • aditya

    Maz pada baris ini kok muncul eror :
    setContentView(R.layout.main);
    txtInggris = (EditText) findViewById(R.id.txtInggris);
    txtIndonesia = (EditText) findViewById(R.id.txtIndonesia);

    txtInggris cannot be resolved or is not a field dan
    txtIndonesia cannot be resolved or is not a field.
    Masalahnya apa maz kok txtInggris dantxtIndonesia yang belakang gak terbaca…Pada class showKamus.Mohon pencerahanya…

  • sdr

    mas, mohon pencerahannya banget ..
    gimana ya cara nampilin hasil dari database sqlite berdasarkan 2x pilihan. udah gt hasilnya lebih dari 1. jadi kaya info jadwal krl, kan jamnya banyak tuh. mohon pencerahannya mas. ditunggu bgt , makasih sebelumnya..

  • diataskan sudah ada dua bahasa trus tambah satu bahasanya tdk bisa ini gmn untuk tambahkanya, klau unutuk tampilan jalan tp untuk mengambil database untuk mengambilkan ini yang tdk bisa,

  • dany

    mas itu inputnya satu2???
    ga bisa yang langsung????

  • mas klo mau merubah database project yg udah jd gimana caranya ya???
    mohon bantuan

  • mas klo mau merubah DB project yg udah jd, gimana caranya??
    mohon bantuan

  • elida

    terimakasih om tutorialnya sangat bermanfaat :)
    tapi ada sedikit masalah ni om, kenapa masih force close ya om saat dijalankan?
    tolong bantuannya om :)

    note:bagi teman2 yg tau juga boleh jawab, heheee

  • juliartha

    @elida coba dirubah android name di activity-nya ganti pake
    android:name=”.showKamus”
    di file AndroidManifest.xml

  • nuwebie

    Ini pake software apa y?? eclipse bukan?? kok aq udah instal tapi gak bisa jalan kk. mohon bantuannya :(

  • elida

    @juliartha
    belum bisa juga sdra/i, mohon bantuannya lagi yaa….
    please

  • aj

    @lutfie : klw dapat carax buat load database dari sdcard tolong di bagi ya mas,,,

  • gusman

    saya sudah bikin kamus dan websitenya sebagai server
    gmana cara memindahkan data yang ada pada web server ke database androidnya??seperti bila ada kata baru kan di update!!mohon pencerahanya

  • Agus Haryanto

    @gusman, bukannya kalau datanya diwebserver dari sisi client tidak ada perubahan. kecuali memang kalau gusman ingin kamusnya bisa dijalankan secara offline, nah disini tantangannya untuk synchronisasi data diserver dan client. Metodenya bisa macam-macam, contohnya based on tanggal. lalu synchronisasinya mau otomatis atau manual. kalau otomatis mau pakai method push atau pull.

  • benjoel

    mas mau tanya klo misalnya diinput pake huruf kecil kan bisa yah.. tapi klo dicampur atau pake huruf besar ga jalan.. nah yang saya mau tanyain itu gmn caranya biar klo diinput mau huruf kecil atau huruf besar bisa jalan mas..mohon bantuannya terimakasih

  • Agus Haryanto

    @benjoel. coba pelajari tentang string operation di java

  • benjoel

    ohh terima kasih mas..itu fungsi equalsignorecasenya ganti coding yang mana ya di class yang ini?

  • Agus Haryanto

    @benjoel. pertama yang harus dipastikan adalah pada saat kita simpan didatabase kata-katanya harus konsisten huruf kecil semua atau huruf besar semua. Taruhlah data didatabase itu kecil semua maka berrati kita tinggal gunakan fungsi toLowerCase(kata). dengan ini masalah diatas teratasi.

    Kenapa kok didabasenya harus seragam, tidak boleh campuran. sebetulnya bisa saja. tetapi apabila datanya besar ini tidak dianjurkan karena akan membuat Query berat contoh lowercase(field).

    Jadi salah satu tips untuk agar query cepat hindarilah pemakaian fungsi sql untuk mengconvert suatu field. Wah kayaknya bagus juga kalau kapan-kapan kita bahas tentang database terutama tentang tuning query.

  • benjoel

    iya mas maksudnya biar kalau input kata “run” kan bisa diartikan jadi “lari” tapi pas diinput kata “Run” menjadi “terjemahan tidak ditemukan”..
    ohh jadi dibuat sama supaya querynya cepat dan ga berat.. klo diconvert fieldnya di sql bisa makan waktu agak lama ya mas..

  • chonz

    Mas Agus Haryanto,
    saya mau tanya, misal ada 1 activity yang berisi inputan, dimana variabel-variabelnya berasal dari 6 tabel, solusinya bagaimana ya? tabelnya reference

  • inda

    mau tanya mas, database d android ini bisa di looping gag?krn klo data nya lebih dari 100 gmn mau ngoding databasenya satu persatu.makasih sebelumnya

  • Agus Haryanto

    @inda, kalau datanya banyak, lebih baik databasenya dibuat diluar aplikasi, bisa menggunalan sqlite manager, pluginnya firefox.

  • shohib

    terima kasih

  • riels

    mas, waktu mengeksekusi db = datakamus.getWritableDatabase();
    di OnCreate method getWritableDatabase ada dimana ya?

  • sali

    pak agus saya maw nanya, klo databasenya di buat di luar aplikasi misal dg sqlite manager..trus bgmn mengimport datbase yg telah jd ke eclipse supaya dpt dipakai sebagai database project?? terimakasih

  • diedot

    metode pencariannya menggunakan metode apa??

  • feriyal

    mas mau tanya, pas ane udah run terus terjemahjan kok gak bisa, muncul notif kalau “aplikasi tertutup”. Itu gimana solusinya ? Thanks :)

  • Agus Haryanto

    @feriyal, coba lihat pesan yang ada dilogcatnya apa ? untuk cara lihat log cat bisa ke http://www.slideshare.net/agusslideshare/menghitung-luas-persegi-panjang-dengan-android

  • feriyal

    ok mas, saya coba dulu. Makasih mas :D

  • yogi

    mas agus ada tutorial binary search khusus untuk android

  • Agus Haryanto

    @yogi, coba pahami apasih binary search itu. setelah paham baru cari binary search dengan java (Karena pemrograman android itu dengan java). kalau kita tahu konsepnya kita akan tahu code itu salah apa benar.

  • margi

    pagi,.
    mas mu tanya,. klo server akses sqlite nya bisa ga?,.
    jadi aplikasi nya nampung byk data, cara terbaik buat synchron nya gmna iaa?,.
    mohon pencerahan, terimakasii

  • yogi

    oh ya mas ,makasih atas balasannya….,ok saya akan coba dulu mas

  • Fuad

    mas mau tanya,kalo mau export data dari database sqlite di device android ke dalam bentuk xls ato csv gmn y??

    thanks

  • Ruben

    setContentView(R.layout.main);
    txtIndonesia = (EditText) findViewById(R.id.txtIndonesia);
    txtDayak Ngaju= (EditText) findViewById(R.id.txtdayak Ngaju);

    ERROR ??? KENAPA YAA ?? bisa gak di jelasin mas di email saya RSuciono@gmail.com

    saya mau mencoba merubah menjadi bhasa indonesia-dayak ngaju….thx

  • kukuh

    tanks mas
    saya berhasil setelah banyk eror

  • Ruben

    mas, kalo cara nambah inputan dari kamus di atas gimana ya kodingnya ??? thx

  • gan! mau tanya tentang aplikasi ini
    ketika kita membuat menu di Intent ke class yang ini, kok waktu mw di back ke class sebelumnya dia force close, itu kalau tidak ada aktivitas, tapi jika kita menekan tombol kan terjadi eksekusi, dan dia bisa kembali
    Pertanyaanya: Bagaima jika kita kembali ke class sebelumnya tanpa melakukan aktivitas di clas Kamus????

  • mas maksud dari ini gimana ya? “4. Untuk pembuatan databasenya kita buat class baru yang mengeksten class SQLiteOpenHelper dengan
    nama DataKamus.java” di new aja terus pilih class, penempatan datakamus.java nya dimana saja?
    terus saya selalu error dibagian

    private DataKamus datakamus = null;

    datakamus = new DataKamus(this);
    db = datakamus.getWritableDatabase();
    datakamus.createTable(db);
    datakamus.generateData(db);

    apa penulisan datakamus nya harus DataKamus, tapi tetep error, mohon bimbingannya mas, makasi ya

  • Darmaji

    @Ruben
    untuk tambah input kamus,bisa diedit di code ini:

    DataKamus.java


    cv.put(INGGRIS, “kata2 inggris”);
    cv.put(INDONESIA, “arti kata2 inggris di atas dalam bahasa indonesia”);
    db.insert(“kamus”, INGGRIS, cv);

    kurang lebihnya mohon maaf..

  • kukuh

    @mas bima
    coba sampean ilangin code ini

    public void onDestroy() {
    super.onDestroy();
    kamusCursor.close();
    db.close();
    }

  • dedy

    if (kamusCursor.moveToFirst()) {
    result = kamusCursor.getString(2);
    for (; !kamusCursor.isAfterLast(); kamusCursor.moveToNext()) {
    result = kamusCursor.getString(2);
    }

    mau tanya ni om,
    Tag diatas itu fungs’nya untuk apa yaa ?

    trims

  • yogi

    Mas agus , bagaimana cara membuat aplikasi kamus dengan menggunakan tombol search?

  • Agus Haryanto

    @yogi, bukanya sama saja fungsi tombol search dan terjemahkan.

  • gia

    gan saya pemula ni,klu mau ngetik lembar kerja sqlite dmn ya ? letak javaclass ketik sqlitenya gitu.klu bisa printscreen mas agus.hehe

  • mas, itu kan untuk 1 suku kata.. klo untuk dua kata , baris ke brp ya musti tambahin syntax nya??
    contoh dua kata ” rumah saya ” tapi di artikan nya perkata. jadinya ” Home I “

  • bangkit

    MAS mau tanya nie, itu buatnya pke algoritma atau metode apa y????
    atau binary search kah atau APPROXIMATE STRING MATCHING kah???

    mohon arahan mas

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam protection by WP Captcha-Free