P. 1
Program Database Sederhana Di Android

Program Database Sederhana Di Android

|Views: 139|Likes:
Dipublikasikan oleh norx2010

More info:

Published by: norx2010 on Jul 06, 2012
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/15/2013

pdf

text

original

www.tobuku.

com

Program Database Sederhana di Android
Desember 2011 Oleh : Feri Djuandi Platform : Android 2.3, Eclipse, SQLite
Tingkat:


Pemula Menengah Mahir

Artikel ini merupakan lanjutan dari tulisan sebelumnya yang berjudul “Menggunakan Database di Android”. Anda dianjurkan untuk membaca artikel tersebut karena mengandung penjelasan dasar-dasar database di Android yang sangat berguna untuk memberikan landasan pemahaman terutama untuk pemula. Pada pembahasan ini akan diperlihatkan sebuah program sederhana untuk membuat database SQLite, membuat sebuah table dan mengisi data ke dalamnya, dan menampilkan data tersebut. Penjelasan ini sengaja menggunakan contoh yang sangat sederhana supaya para pembaca dapat memahami prinsip-prinsip yang esensial di dalam penggunaan database SQLite. Tampilan output pada layar pun akan dibuat minimalis dengan mengabaikan tampilan yang dipercantik untuk menghindari tambahan-tambahan baris program pemanis yang mengesankan keruwetan dan mengaburkan fokus pembaca pada inti pembahasan. Menyimpan dan menampilkan data adalah operasi database yang sangat mendasar, namun perlu disadari bahwa aplikasi yang canggih dan sangat kompleks sekalipun tidak lepas dari operasi-operasi dasar tersebut. Oleh karena itu para programmer perlu mengetahui teknikteknik dan penggunaan class-class yang berkaitan dengan database mulai dari tahap yang awal. Setelah dikuasainya konsep dasar tersebut, selanjutnya Anda bisa mengembangkan dan mengombinasikan berbagai teknik yang lebih baik dan efisien sesuai dengan keperluan. Contoh program ini terdiri dari dua bagian, yaitu program yang menampilkan sebuah form pengisian data dimana pengguna bisa memasukkan data kemudian menyimpannya di dalam database. Bagian yang ke-dua adalah untuk menampilkan data yang tersimpan. Sebelum kedua bagian program itu bisa bekerja, tentunya program utama akan terlebih dahulu menyiapkan database dan membuat table dengan struktur tertentu. Untuk memberikan gambaran yang lebih jelas dari cara kerja program tersebut, silakan memperhatikan beberapa ilustrasi di bawah ini. Saat program dijalankan ada dua buah tombol untuk memilih antara memasukan data (New) atau menampilkan data (Browse).

-1-

tobuku.com Saat tombol New ditekan. data-data akan ditampilkan secara bergantian pada kotak pesan mulai dari awal hingga akhir. Pengguna melengkapi semua field kemudian menekan tombol Save untuk menyimpan data.www. sebuah form ditampilkan untuk pengisian data. Kembali pada tampilan utama. -2- . Saat tombol Browse ditekan.

Buat sebuah class baru bernama DBAdapter dengan kode program di bawah ini. Tujuannya adalah tidak mencampur-adukkan logika bisnis dengan operasi tingkat rendah (SELECT.www.tobuku. 1. Jalankan Eclipse dan buat sebuah Android Project. Program utama cukup memanggil fungsi-fungsinya secara sederhana dengan satu baris perintah saja. Anda tidak perlu mengetikkan sendiri kode program itu karena program selengkapnya bisa diunduh dari situs web dimana artikel ini berasal. Untuk tujuan kerapihan program. akan jauh lebih baik jika program utama fokus hanya pada jalannya alur program utama.com Berikut ini adalah uraian mengenai pembuatan program tersebut. INSERT. perubahan data. penghapusan data dan pemanggilan data. sementara fungsi-fungsi database dipisahkan ke dalam class DBAdapter ini. walaupun sebetulnya fungsi itu ditulis dengan baris yang panjang dan proses yang rumit di bagian sub-program. -3- . pengisian data. UPDATE dan DELETE) yang akan membuat kode program sulit dibaca dan berkesan rumit sekali. 2. Class ini dibuat untuk menempatkan sub-program yang menangani operasi-operasi database seperti pembuatan table.

private SQLiteDatabase db. public static final String KEY_CUSTGENDER="custgender".context = ctx. android.content. private static final String TABLE_CREATE = "create table customers (_id integer primary key autoincrement.Log.sqlite.Cursor. } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx.SQLException. android. private static final int DATABASE_VERSION=1.w(TAG.sqlite. null. } @Override public void onCreate(SQLiteDatabase db) { db. public static final String KEY_ROWID="_id".www. custphone text not null)". custaddr text not null. int oldVersion.content. which will destroy all old data").SQLiteDatabase. private DatabaseHelper dbHelper.execSQL(TABLE_CREATE). public static final String KEY_CUSTNAME="custname".database. public static final String KEY_CUSTADDR="custaddr".houseoflife. private static final String DATABASE_NAME="mycompany. private static final String TABLE_DROP = "DROP TABLE IF EXISTS customers". " + "custname text not null. "Upgrading database from version " + oldVersion + " to " + newVersion + ". } @Override public void onUpgrade(SQLiteDatabase db. " + "custgender text not null. DATABASE_NAME.com package net.Context. android.database.ContentValues.tobuku. public class DBAdapter { private static final String TAG="DBAdapter".database. -4- . int newVersion) { Log.SQLiteOpenHelper. dbHelper = new DatabaseHelper(this.database.context).dbsample.util. public DBAdapter(Context ctx) { this. android. private final Context context. android. public static final String KEY_CUSTPHONE="custphone". android. DATABASE_VERSION).sqlite". import import import import import import import android.

getWritableDatabase(). -5- . } } Dengan merujuk pada konsep embedded database. } } public DBAdapter open() throws SQLException { db = dbHelper.insert("customers". } public Cursor getAllCustomers() { return db. custName). " + "custgender text not null. " + "custname text not null. return db. initialValues. initialValues. char custGender. Character.put(KEY_CUSTADDR.sqlite pada perangkat android yaitu smartphone atau tablet android. custphone text not null)".query("customers".execSQL(TABLE_DROP).close(). tampak bahwa program ini akan membuat sebuah database SQLite bernama mycompany. initialValues).com db. private static final String TABLE_CREATE = "create table customers (_id integer primary key autoincrement. null.toString(custGender)). custaddr text not null. initialValues. } public void close() { dbHelper. null. String custAddr.www. null. custPhone). null. } public long insertCustomer(String custName.put(KEY_CUSTGENDER. KEY_CUSTADDR. String custPhone) { ContentValues initialValues = new ContentValues(). onCreate(db). KEY_CUSTGENDER. atau emulator android jika program ini dijalankan pada komputer selama masih dalam tahap pengembangan.put(KEY_CUSTPHONE. return this. KEY_CUSTNAME. initialValues. KEY_CUSTPHONE }.put(KEY_CUSTNAME.tobuku. Selanjutnya ke dalam database itu akan ditambahkan sebuah table bernama customers dengan perintah CREATE berikut ini. custAddr). null. KEY_ROWID + " DESC"). new String[] { KEY_ROWID.

} ..com Database dan table tersebut akan dibentuk saat program dijalankan pertama kali. Button: id= NewCust.execSQL(TABLE_CREATE). Buka res layout main. id = BrowseCust 4. } @Override public void onCreate(SQLiteDatabase db) { db. serta penggunaan objek Cursor untuk menampung baris-baris hasil pengambilan data.xml untuk merancang tampilan layar utama.www. 3. Pada bagian akhir dari class tersebut tampak dua buah method bernama insertCustomer dan getAllCustomers yang masing-masing berfungsi untuk menambahkan data ke dalam table customers dan mengambil data dari dalamnya. -6- .tobuku.. Perhatikan cara penggunaan fungsi insert dan query yang bisa jadi merupakan sesuatu yang baru untuk Anda. DATABASE_NAME. DATABASE_VERSION). private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context ctx) { super(ctx. Tambahkan dua buah tombol pada tampilan seperti diperlihatkan di bawah ini. null.xml dengan tipe Layout. Buat sebuah file Android XML dan beri nama sebagai customer_form. yaitu melalui objek DatabaseHelper saat ia diinisiasi.

Silakan mendesain form pengsian data seperti diperlihatkan oleh gambar berikut ini. Button: id=Button01 -7- .www.com 5. EditText: id=CustName EditText: id=CustAddr RadioButton: id=GMale. Buat sebuah file Android XML lain dan beri nama sebagai save_customer.xml dengan tipe Layout. id=GFemale EditText: id=CustPhone Button: id=Save 6. Tambahkan sebuah tombol pada tampilan seperti diperlihatkan di bawah ini.tobuku.

import import import import import import import android. Cursor c = db.class).LENGTH_SHORT). c.this). */ @Override public void onCreate(Bundle savedInstanceState) { super.this.setOnClickListener(new View.Cursor.BrowseCust btnBrowse.OnClickListener() { public void onClick(View v) { DBAdapter db = new DBAdapter(MainActivity. android.Toast.app.getAllCustomers().widget.NewCust btnNew. package net.java untuk menambahkan kode program sebagai berikut. "No data".setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent i = new Intent(MainActivity.open().LENGTH_SHORT). Buka class MainActivity.show().database. android.www. db.getString(2).moveToFirst()) { do { Toast.houseoflife.Bundle.tobuku.close().show().View. " + c.this. } else Toast. } while (c. public class MainActivity extends Activity { /** Called when the activity is first created. db.widget. android.id.id.getString(1) + ". setContentView(R.makeText(MainActivity. CustomerForm. Toast.main).view.Intent. } } -8- .onCreate(savedInstanceState).os.this.content. Button btnBrowse = (Button) findViewById(R.dbsample. } } ).moveToNext()).com 7. } } ). android.Activity. startActivity(i).makeText(MainActivity. android. if (c. android.layout. Button btnNew = (Button) findViewById(R.Button. Toast.

layout. String custAddr = ((EditText) findViewById(R.view. } while (c. 8.Context. Saat tombol New ditekan maka class CustomerForm akan dipanggil untuk menampilkan layar yang ditunjukkan oleh customer_form.getCheckedRadioButtonId()) { -9- . Buat sebuah class baru bernama CustomerForm yang berisi program sebagai berikut.Intent.id.app. android. package net.. Button btnEducation = (Button) findViewById(R.app.RadioGroup. maka data yang tersimpan di dalam database SQLite akan ditampilkan melalui baris program berikut ini: .onCreate(savedInstanceState). android.CustAddr)).OnClickListener() { public void onClick(View v) { //validate data entries String custName = ((EditText) findViewById(R.houseoflife.. Namun saat tombol Browse ditekan. char custGender = 'X'.getText().AlertDialog.EditText.Button. if (c.toString().trim().widget. android. public class CustomerForm extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.CustGender)). Cursor c = db.content. btnEducation.. String custPhone = ((EditText) findViewById(R.toString().xml.CustName)). android.id.widget.customer_form).setOnClickListener(new View.getText(). import import import import import import import import import import android. yaitu untuk pengisian data.id.content.DialogInterface..com Bagian terpenting dari program ini adalah menagani aksi penekanan tombol New dan Browse.. .os.id.widget.trim().Save).dbsample.toString(). android.www.Bundle.moveToNext()).moveToFirst()) { do { .getText(). android. android.Activity.trim().content. android..tobuku.View.getAllCustomers(). switch (((RadioGroup) findViewById(R. setContentView(R. android.CustPhone)).id.

putExtra("CustPhone". custAddr).tobuku. int which) { // TODO Auto-generated method stub } }).this.putExtra("CustGender". i. i. if(custName.this.putExtra("CustName". SaveCustomer. custAddr). break.putExtra("CustAddr".setMessage(e) . i. startActivity(i). new DialogInterface.class).GFemale: custGender='F'. custName).equals("") || custPhone.setNeutralButton("Close".OnClickListener() { @Override public void onClick(DialogInterface dialog. } } } ). case R.GMale: custGender='M'.putExtra("CustAddr".this. i. custPhone). } Context context=CustomerForm. new AlertDialog.id. i. i. i.show(). break.setTitle("Invalid Data") .10 - .com case R. } } Program di atas memeriksa isian pada form untuk memastikan semua field diisi. .".putExtra("CustName". Saat semua data telah diisi dengan benar maka ia akan mengirim isi semua field kepada class lain yang bernama SaveCustomer melalui baris-baris program: . custGender)..class). Intent i = new Intent(CustomerForm. then send the data to save Intent i = new Intent(CustomerForm. custPhone).Builder(context) . custName).equals("") || custGender == 'X') { String e = "Please complete the data.id..www. SaveCustomer. } else { //If OK.putExtra("CustPhone".equals("") || custAddr.

makeText(this.content.View.com i.Toast.onCreate(savedInstanceState)..custGender. 9.Intent. } catch(Exception ex) { Toast . } finally { db. char custGender = b. custGender).custAddr. import android.LENGTH_SHORT) . package net. //get the inputed data Intent i = getIntent().houseoflife. "Saving error". setContentView(R. Toast .www.widget.getString("CustName").widget.show().LENGTH_SHORT) .show(). Buat class yang terakhir bernama SaveCustomer yang berisi program sebagai berikut. Toast.Activity.view. "Data successfully saved". import android.getString("CustAddr"). .tobuku.. DBAdapter db = new DBAdapter(this try { db.getString("CustPhone"). startActivity(i).save_customer).getChar("CustGender").putExtra("CustGender". import android. String custPhone = b.11 - . String custName = b. import android.makeText(this.layout. public class SaveCustomer extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super. import android.Bundle.custPhone). import android.os.open(). } .app.close(). long id = db. String custAddr = b.getExtras(). Toast.dbsample. Bundle b = i.Button.insertCustomer(custName.

www. <?xml version="1. . MainActivity.category.MainActivity" android:label="Customer Entry/View"> <intent-filter> <action android:name="android.this.Button01).0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".tobuku.intent.OnClickListener() { public void onClick(View v) { Intent i = new Intent(SaveCustomer. Pada langkah terakhir.SaveCustomer" android:label="Save Data"></activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest> 11.12 - . } } Program ini menangkap nilai-nilai field yang dikirim oleh class sebelumnya kemudian menyimpan data tersebut ke dalam table melalui fungsi insertCustomer.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.LAUNCHER" /> </intent-filter> </activity> <activity android:name=". startActivity(i). 10. } } ). Blok try-catch akan menangkap error semacam itu secara elegan dan menampilkan pesan error tanpa mengakibatkan program berhenti.setOnClickListener(new View. Operasi database dilakukan di dalam blok try-catch untuk mengantisipasi jika seandainya terjadi database error yang bisa mengakibatkan program berhenti secara mendadak.class).dbsample" android:versionCode="1" android:versionName="1.id.com/apk/res/android" package="net.CustomerForm" android:label="Customer Data"></activity> <activity android:name=". Saat data berhasil disimpan. buka file AndroidManifest. btnBack.xml dan tambahkan/edit baris yang ditandai di bawah ini.MAIN" /> <category android:name="android.houseoflife.com Button btnBack = (Button) findViewById(R. Silakan menjalankan program tersebut pada emulator Android untuk melihat hasilnya.android. ia akan menampilkan pesan "Data successfully saved".action.intent. dan tampak sebuah tombol yang jika ditekan akan mengembalikan tampilan ke layar utama seperti semula.

Silakan membaca referensi di bawah ini untuk informasi lebih lengkap mengenai method dan perintah SQL: http://www.android.www. Penggunaan method tersebut harus dipahami karena mereka hampir selalu digunakan di dalam aplikasi database.tobuku.13 - . Sebagai penutup berikut ini adalah beberapa method penting yang ada di dalam class SQLiteDatabase yang merupakan operasi dasar pengoperasian database SQLite.org/lang_corefunc. Langkahlangkah untuk mengambil database dan membaca isinya telah dijelaskan pada artikel sebelumnya seperti yang dijelaskan pada bagian awal tulisan ini.html http://developer. Method insert query update delete execSQL Fungsi Menambah baris data ke dalam sebuah table Mencari/mengambil data dari sebuah table Mengubah data dalam sebuah table Menghapus data dalam sebuah table Menjalankan perintah SQL di dalam database Di luar method tersebut masih ada banyak method lain yang perlu Anda ketahui pemakaiannya untuk mengoptimalkan penggunaan database SQLite di dalam aplikasi Android.html . silakan mengambil database SQLite yang ada di dalam emulator agar bisa dilihat isinya menggunakan program SQLite Manager.sqlite.org/lang.html http://www.sqlite.com/reference/android/database/sqlite/SQLiteDatabase.com Setelah Anda berhasil memasukkan beberapa data.

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->