1 [create] sqlite android_rev

25
1 SQLite Android 1.1. Pengenalan SQLite Android SQLite itu merupakan sebuah Database yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp. SQLite adalah sebuah open source database yang telah ada cukup lama, cukup stabil, dan sangat terkenal pada perangkat kecil, termasuk Android. Android menyediakan database relasional yang ringan untuk setiap aplikasi menggunakan SQLite. Aplikasi dapat mengambil keuntungan dari itu untuk mengatur relational database engine untuk menyimpan data secara aman dan efisien. 1.1.1. Teknik Penyimpanan pada Android Dalam sistem android memiliki beberapa teknik untuk melakukan penyimpanan data. Teknik yang umum di gunakan adalah sebagai berikut : - Shared Preferences, yaitu menyimpan data beberapa nilai (value) dalam bentuk groups key yang dikenal dengan preferences. - Files, yaitu menyimpan data dalam bentuk file, dapat berupa menulis ke file atau membaca dari file. - SQLite Database, yaitu menyimpan data dalam bentuk Databases. - Content Providers, yaitu menyimpan data dalam bentuk content providers service. Pada bagian ini kita akan fokus membahas bagian databases. Tidak ada database yang otomatis disediakan oleh android, jika kita menggunakn SQLite kita harus meng-create database sendiri, mendefinisikan tabelnya, serta index dan datanya. Untuk membuat dan membuka database yang paling baik adalah menggunakan libraries.

Upload: yufri-badunk-tea

Post on 10-Nov-2015

68 views

Category:

Documents


3 download

DESCRIPTION

Semoga Bermanfaat

TRANSCRIPT

1 SQLite Android

1.1. Pengenalan SQLite AndroidSQLite itu merupakan sebuah Database yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp. SQLite adalah sebuah open source database yang telah ada cukup lama, cukup stabil, dan sangat terkenal pada perangkat kecil, termasuk Android. Android menyediakan database relasional yang ringan untuk setiap aplikasi menggunakan SQLite. Aplikasi dapat mengambil keuntungan dari itu untuk mengatur relational database engine untuk menyimpan data secara aman dan efisien. 1.1.1. Teknik Penyimpanan pada AndroidDalam sistem android memiliki beberapa teknik untuk melakukan penyimpanan data. Teknik yang umum di gunakan adalah sebagai berikut : Shared Preferences, yaitu menyimpan data beberapa nilai (value) dalam bentuk groups key yang dikenal dengan preferences. Files, yaitu menyimpan data dalam bentuk file, dapat berupa menulis ke file atau membaca dari file. SQLite Database, yaitu menyimpan data dalam bentuk Databases. Content Providers, yaitu menyimpan data dalam bentuk content providers service. Pada bagian ini kita akan fokus membahas bagian databases. Tidak ada database yang otomatis disediakan oleh android, jika kita menggunakn SQLite kita harus meng-create database sendiri, mendefinisikan tabelnya, serta index dan datanya. Untuk membuat dan membuka database yang paling baik adalah menggunakan libraries.Importantandroid.database.sqlite.SQLiteOpenHelperyang menyediakan 3 (tiga) metode yaitu :1. Constructor, menyediakan representasi versi dari database dan skema database yang kita gunakan.2. onCreate(), menyediakan SQLiteDatabase object yang kita gunakan dakan definisi tabel dan inisialisasi data.3. onUpgrade(), menyediakan fasilitas konversi database dari database versi yang lama ke database.1.1.2. Relasi antara database SQLite dengan AndroidUntuk Android, SQLite dijadikan satu di dalam Android runtime, sehingga setiap aplikasi Android dapat membuat basis data SQLite. Karena SQLite menggunakan antarmuka SQL, cukup mudah untuk digunakan orang orang dengan pengalaman lain yang berbasis databases. Terdapat beberapa alasan mengapa SQLite sangat cocok untuk pengembangan aplikasi Android, yaitu : Database dengan konfigurasi nol. Artinya tidak ada konfigurasi database untuk para developer. Ini membuatnya relatif mudah digunakan. Tidak memiliki server. Tidak ada proses database SQLite yang berjalan. Pada dasarnya satu set libraries menyediakan fungsionalitas database. Single-file database. Ini membuat keamanan database secara langsung. Open source. Hal ini membuat developer mudah dalam pengembangan aplikasi.

1.2. CRUD SQLite AndroidCRUD adalah singkatan dari Create Read Update Delete, yang sering digunakan pada aplikasi-aplikasi pengolahan data seperti, Sistem Informasi, SIAKAD, Website, dll. yang kebanyakan menggunakan fungsi CRUD didalamnya. Fungsi ini digunakan untuk menambahkan data, menghapus data, serta mengupdate data. Dan semua fungsi tersebut harus dihubungankan dengan sebuah server database.1.2.1. Create (Tambah Data)Untuk membuat sebuah aplikasi dengan menggunakan fungsi CRUD, pertama kali yang harus dibuat adalah fungsi Create (Tambah Data). Tetapi sebelum itu kita buat terlebih dahulu project baru di Android Studio dengan nama DatabaseSQLite. Selanjutnya, karena dalam project kali ini kita menggunakan paradigma OOP, maka kita buat dahulu sebuah kelas controller dengan nama Barang.java. Berikut adalah source code nya.package sqlite.modul.yufri.databasesqlite;/** * Created by Yufri on 30/04/2015. */public class Barang { private long id; private String namaBarang; private String merkBarang; private String hargaBarang;

public Barang() { }

public long getId() { return id; }

public void setId(long id) { this.id = id; }

public String getNamaBarang() { return namaBarang; }

public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang; }

public String getMerkBarang() { return merkBarang; }

public void setMerkBarang(String merkBarang) { this.merkBarang = merkBarang; }

public String getHargaBarang() { return hargaBarang; }

public void setHargaBarang(String hargaBarang) { this.hargaBarang = hargaBarang; }

@Override public String toString() { return "Barang : "+ namaBarang + " "+ merkBarang + " " + hargaBarang; }}

Fungsi dari kelas Barang.java tersebut adalah sebagai controller yang akan digunakan dalam membangun sebuah aplikasi, karena semua variable dan atribut utama dari sebuah objek bernama Barang dideklarasikan pada kelas tersebut. Selanjutnya adalah membuat sebuah kelas bernama DBHelper.java. Dimana kelas tersebut berfungsi untuk membuat sebuah database baru, membuat tabel baru, mendeklarasikan tipe variable dari masing masing field yang ada dalam tabel, dan mengupgrade versi database. Berikut adalah langkah langkah untuk mengimplementasikan fungsi fungsi tersebut di dalam kelas DBHelper.java (untuk nama variable dansegala macam atribut apabila ingin berbeda dapat disesuaikan sendiri). Pendeklarasian package yang akan digunakan di dalam kelas DBHelper.java. Berikut adalah source code setelah package di deklarasikan.package sqlite.modul.yufri.databasesqlite;

//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper {

}

Setelah itu kelas DBHelper.java diextends ke SQLiteOpenHelper, apabila nanti ada keterangan error klik saja error tersebut. Nanti akan meminta untuk mengimplementasikan methods, klik saja maka nanti akan muncul beberapa method tambahan yaitu method onCreate() dan onUpgrade(). Source code kelas DBHelper.java akan menjadi seperti berikut.package sqlite.modul.yufri.databasesqlite;

//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper extends SQLiteOpenHelper {

@Override public void onCreate(SQLiteDatabase sqLiteDatabase) { }

@Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {

}}

Apabila masih terjadi error pada kelas DBHelper.java klik lagi error tersebut maka akan meminta untuk mengimplementasikan kelas super. Ketika di klik maka akan muncul dua pilihan, pilih yang pertama maka akan terbentuk kelas super. Dan source code nya akan menjadi seperti ini.package sqlite.modul.yufri.databasesqlite;

//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); }

@Override public void onCreate(SQLiteDatabase sqLiteDatabase) {

}

@Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {

}}

Kemudian deklarasian variable variable yang digunakan dalam database, seperti nama tabel, nama kolom, nama database, dan versi database. Setelah pendeklerasian variable selesai, pada method kelas super hapus sebagian source code menjadi source code yang diperlukan saja dan ubah varible nama database dan versi database. Source code nya akan menjadi seperti ini. Perlu dicatat nama database = db_barang.db, nama tabel = barang, field = barang_id, barang_nama, barang_merk, barang_harga.package sqlite.modul.yufri.databasesqlite;//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper extends SQLiteOpenHelper {

/** deklarasi konstanta-konstanta yang digunakan pada database, seperti nama tabel, nama-nama kolom, nama database, dan versi dari database **/ public static final String TABLE_NAME = "barang"; public static final String COLUMN_ID = "barang_id"; public static final String COLUMN_NAME = "barang_nama"; public static final String COLUMN_MERK = "barang_merk"; public static final String COLUMN_HARGA = "barang_harga"; private static final String db_name = "db_barang.db"; private static final int db_version = 1;

// Perintah SQL untuk membuat tabel database baru private static final String db_create = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NAME + " varchar(50) not null, " + COLUMN_MERK + " varchar(50) not null, " + COLUMN_HARGA + " varchar(50) not null);";

public DBHelper(Context context) { super(context, db_name, null, db_version); }

@Override public void onCreate(SQLiteDatabase sqLiteDatabase) {

}

@Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {

}}

Selanjutnya pada method onCreate() tambahkan perintah untuk mengeksekusi perintah sql membuat tabel baru dengan memanggil variable yang sudah di deklarasikan. Berikut adalah source code setelah ditambahkan perintah pada method onCreate().package sqlite.modul.yufri.databasesqlite;//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper extends SQLiteOpenHelper {

/** deklarasi konstanta-konstanta yang digunakan pada database, seperti nama tabel, nama-nama kolom, nama database, dan versi dari database **/ public static final String TABLE_NAME = "barang"; public static final String COLUMN_ID = "barang_id"; public static final String COLUMN_NAME = "barang_nama"; public static final String COLUMN_MERK = "barang_merk"; public static final String COLUMN_HARGA = "barang_harga"; private static final String db_name = "db_barang.db"; private static final int db_version = 1;

// Perintah SQL untuk membuat tabel database baru private static final String db_create = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NAME + " varchar(50) not null, " + COLUMN_MERK + " varchar(50) not null, " + COLUMN_HARGA + " varchar(50) not null);";

public DBHelper(Context context) { super(context, db_name, null, db_version); }

//mengeksekusi perintah SQL di atas untuk membuat tabel database baru @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(db_create); }

@Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {

}}

Dan yang terakhir adalah menambahkan perintah pada method onUpgrade(), yaitu perintah yang digunakan untuk mengupgrade versi database. Tetapi untuk perintah pada method onUpgrade() dijalankan apabila ingin mengupgrade versi database saja. Baik, setelah semua fungsi sudah diimplementasikan pada masing masing method, maka berikut adalah source code lengkap dari kelas DBHelper.java.

package sqlite.modul.yufri.databasesqlite;

//deklarasi import packageimport android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBHelper extends SQLiteOpenHelper {

/** deklarasi konstanta-konstanta yang digunakan pada database, seperti nama tabel, nama-nama kolom, nama database, dan versi dari database **/ public static final String TABLE_NAME = "barang"; public static final String COLUMN_ID = "barang_id"; public static final String COLUMN_NAME = "barang_nama"; public static final String COLUMN_MERK = "barang_merk"; public static final String COLUMN_HARGA = "barang_harga"; private static final String db_name = "db_barang.db"; private static final int db_version = 1;

// Perintah SQL untuk membuat tabel database baru private static final String db_create = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NAME + " varchar(50) not null, " + COLUMN_MERK + " varchar(50) not null, " + COLUMN_HARGA + " varchar(50) not null);";

public DBHelper(Context context) { super(context, db_name, null, db_version); }

//mengeksekusi perintah SQL di atas untuk membuat tabel database baru @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(db_create); }

// dijalankan apabila ingin mengupgrade database @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) { Log.w(DBHelper.class.getName(), "Upgrading database from version " + i + " to " + i2 + ", which will destroy all old data"); sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(sqLiteDatabase); }}

Setelah selesai membuat kelas DBHelper.java, sekarang kita lanjutkan membuat kelas DBDataSource.java. Kelas tersebut berfungsi sebagai controller untuk menginisialisasi database yang sudah dibuat, membuat method perintah tambah data, lihat data, ubah data, dan hapus data. Sehingga nantinya ketika akan membuat kelas kelas untuk tambah data, lihat data, ubah data, dan hapus data tinggal memanggil saja method perintah yang sudah dibuat di dalam kelas tersebut. Berikut adalah langkah langkah untuk mengimplementasikan fungsi fungsi tersebut di dalam kelas DBDataSource.java (untuk nama variable dan segala macam atribut apabila ingin berbeda dapat disesuaikan sendiri). Pendeklarasian package yang akan digunakan di dalam kelas DBDataSource.java. Berikut adalah source code setelah package di deklarasikan.package sqlite.modul.yufri.databasesqlite;import java.util.ArrayList;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBDataSource {

}

Kemudian deklarasian variable variable yang digunakan dalam database, variabel tersebut nantinya akan berfungsi untuk menginisialisasi SQLite Database, kelas DBHelper yang sudah dibuat, dan juga variable untuk memanggil semua nama kolom yang ada dalam database. Berikut adalah source code nya setelah adanya deklarasi variable tersebut.package sqlite.modul.yufri.databasesqlite;import java.util.ArrayList;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBDataSource {

//inisialiasi SQLite Database private SQLiteDatabase database;

//inisialisasi kelas DBHelper private DBHelper dbHelper;

//ambil semua nama kolom private String[] allColumns = { DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME, DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA };}

Selanjutnya buat kelas constructor dan instansiasi kelas DBHelper.java pada constructor tersebut, sekaligus buat method untuk membuka / membuat koneksi dengan database dan juga method untuk menutup koneksi. Buat source codenya menjadi seperti ini.package sqlite.modul.yufri.databasesqlite;import java.util.ArrayList;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.util.Log;

/** * Created by Yufri on 30/04/2015. */public class DBDataSource {

//inisialiasi SQLite Database private SQLiteDatabase database;

//inisialisasi kelas DBHelper private DBHelper dbHelper;

//ambil semua nama kolom private String[] allColumns = { DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME, DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA };

//DBHelper diinstantiasi pada constructor public DBDataSource(Context context) { dbHelper = new DBHelper(context); }

//membuka/membuat sambungan baru ke database public void open() throws SQLException { database = dbHelper.getWritableDatabase(); }

//menutup sambungan ke database public void close() { dbHelper.close(); }}

Apabila sudah sekarang lanjut membuat method untuk mengcreate data atau menginsertkan data ke dalam database. Di dalam method tersebut nantinya akan berisi beberapa perintah seperti memasangkan data dengan nama kolom, mengeksekusi perintah sql insert data, melakukan pengecekan apakah data yang di insertkan sudah masuk, memindahkan data baru ke yang paling atas dengan cara memanggil fungsi method lain, serta membuka menutup koneksi dengan database. Berikut adalah source code lengkap dari kelas DBDatasSource.java setelah ditambahkan method untuk menginsertkan data dan method untuk memindahkan data yang baru masuk ke dalam database di list yang paling atas.package sqlite.modul.yufri.databasesqlite;

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

/** * Created by Yufri on 30/04/2015. */public class DBDataSource {

//inisialiasi SQLite Database private SQLiteDatabase database;

//inisialisasi kelas DBHelper private DBHelper dbHelper;

//ambil semua nama kolom private String[] allColumns = { DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME, DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA };

//DBHelper diinstantiasi pada constructor public DBDataSource(Context context) { dbHelper = new DBHelper(context); }

//membuka/membuat sambungan baru ke database public void open() throws SQLException { database = dbHelper.getWritableDatabase(); }

//menutup sambungan ke database public void close() { dbHelper.close(); }

//method untuk create/insert barang ke database public Barang createBarang(String nama, String merk, String harga) {

// membuat sebuah ContentValues, yang berfungsi // untuk memasangkan data dengan nama-nama // kolom pada database ContentValues values = new ContentValues(); values.put(DBHelper.COLUMN_NAME, nama); values.put(DBHelper.COLUMN_MERK, merk); values.put(DBHelper.COLUMN_HARGA, harga);

// mengeksekusi perintah SQL insert data // yang akan mengembalikan sebuah insert ID long insertId = database.insert(DBHelper.TABLE_NAME, null, values);

// setelah data dimasukkan, memanggil // perintah SQL Select menggunakan Cursor untuk // melihat apakah data tadi benar2 sudah masuk // dengan menyesuaikan ID = insertID Cursor cursor = database.query(DBHelper.TABLE_NAME, allColumns, DBHelper.COLUMN_ID + " = " + insertId, null, null, null, null);

// pindah ke data paling pertama cursor.moveToFirst();

// mengubah objek pada kursor pertama tadi // ke dalam objek barang Barang newBarang = cursorToBarang(cursor);

// close cursor cursor.close();

// mengembalikan barang baru return newBarang; }

private Barang cursorToBarang(Cursor cursor) { // buat objek barang baru Barang barang = new Barang(); // debug LOGCAT Log.v("info", "The getLONG "+cursor.getLong(0)); Log.v("info", "The setLatLng "+cursor.getString(1)+","+cursor.getString(2));

/* Set atribut pada objek barang dengan * data kursor yang diambil dari database*/ barang.setId(cursor.getLong(0)); barang.setNamaBarang(cursor.getString(1)); barang.setMerkBarang(cursor.getString(2)); barang.setHargaBarang(cursor.getString(3));

//kembalikan sebagai objek barang return barang; }

}

Selanjutnya apabila sudah selesai membuat kelas DBHelper.java dan DBDataSource.java, sekarang kita deklarasikan terlebih dahulu beberapa string yang akan kita gunakan pada aplikasi di dalam file String.xml, karena di dalam membuat sebuah aplikasi Android yang profesional semua string sebaiknya jangan di tulis sendiri tetapi dijadikan satu dalam file String.xml sehingga apabila kita akan melakukan akses menjadi lebih mudah. Berikut adalah source code lengkap dari file String.xml (untuk penamaan string apabila ingin berbeda dapat disesuaikan sendiri).

Database SQLite Tambah Data Data Barang Ubah Data Tambah Data Data Barang Tambah Ubah Batal Ubah Hapus Nama Barang Merk Barang Harga Barang Data Barang Ubah Data | ID :

Baik setelah selesai mendeklarasikan string, sekarang kita buat untuk layout nya. Pertama yang harus dibuat yaitu layout untuk menu nya sendiri, pada tampilan menu awal akan dibuat sederhana saja yaitu ada dua buah menu, yang pertama menu Tambah Data dan menu Lihat Data. Sekarang buat file pada folder layout dengan nama activity_menu.xml. Berikut adalah source code lengkap activity_menu.xml (untuk nama button atau segala macam atribut apabila ingin berbeda dapat disesuaikan sendiri).

Selanjutnya apabila layout untuk menu sudah terbuat, sekarang buat kelas activity untuk memanggil layout activity_menu.xml yang sudah dibuat sehingga dapat tampil di interface Android. Beri nama kelas tersebut dengan nama kelas MenuActivity.java. Berikut adalah langkah langkah untuk membuat kelas MenuActivity.java (untuk nama variable dan segala macam atribut apabila ingin berbeda dapat disesuaikan sendiri). Pertama deklarasikan package di dalam kelas MenuActivity.java dan extends kan kelas MenuActivty.java ke Activity dan implements kan ke OnClickListener. Apabila ada error ketika implements pada OnClickListener klik saja errornya maka nanti akan meminta untuk mengimplementasikan method onClick setelah method tersebut di implementasikan maka error akan hilang. Berikut adalah source code dari kelas MenuActivity.java setelah dideklarasikan package, extends Activity, dan implements ke OnClickListener.package sqlite.modul.yufri.databasesqlite;

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

/** * Created by Yufri on 30/04/2015. */public class MenuActivity extends Activity implements OnClickListener {

@Override public void onClick(View view) { }}

Selanjutnya deklarasikan variable button dan intent, varible button fungsinya untuk memanggil button yang sudah dibuat di layout dan intent fungsinya untuk memanggil kelas lain. Dan apabila pada saat awal pembuatan kelas tidak ada method onCreate() maka buat sendiri method tersebut. Dan di dalam method onCreate() panggil varible yang sudah dideklarasikan sebelumnya, serta panggil aksi button yang sudah dibuat. Berikut adalah source code dari kelas MenuActivity.java setelah ditambahkan beberapa method. package sqlite.modul.yufri.databasesqlite;

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

/** * Created by Yufri on 30/04/2015. */public class MenuActivity extends Activity implements OnClickListener {

//Pendeklarasian variabel button dan intent. Intent fungsinya untuk memanggil kelas lain. private Intent intent; private Button buttonTambahData; private Button buttonDataBarang;

/** Method onCreate berfungsi untuk memanggil variable yang sudah dideklarasikan dan juga mengeset aksi dari button **/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu);

buttonTambahData = (Button) findViewById(R.id.buttonTambahData); buttonDataBarang = (Button) findViewById(R.id.buttonDataBarang);

buttonTambahData.setOnClickListener(this); buttonDataBarang.setOnClickListener(this); }

@Override public void onClick(View view) { }}

Selanjutnya buat fungsi untuk memanggil kelas Tambah Data dan juga kelas Lihat Data di dalam method onClick dengan menggunakan perintah kondisi switch case. Apabila pada saat pemanggilan kelas nantinya error di comment saja, karena ketika sudah membuat kelas Tambah Data dan Lihat Data maka error tersebut akan hilang. Berikut adalah source code lengkap dari kelas MenuActivity.java./** * Created by Yufri on 30/04/2015. */public class MenuActivity extends Activity implements OnClickListener {

//Pendeklarasian variabel button dan intent. Intent fungsinya untuk memanggil kelas lain. private Intent intent; private Button buttonTambahData; private Button buttonDataBarang;

/** Method onCreate berfungsi untuk memanggil variable yang sudah dideklarasikan dan juga mengeset aksi dari button **/

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu);

buttonTambahData = (Button) findViewById(R.id.buttonTambahData); buttonDataBarang = (Button) findViewById(R.id.buttonDataBarang);

buttonTambahData.setOnClickListener(this); buttonDataBarang.setOnClickListener(this); }

@Override public void onClick(View view) { switch(view.getId()) { // Perintah untuk memanggil kelas TambahActivity (Tambah Data) case R.id.buttonTambahData: intent = new Intent(MenuActivity.this, TambahActivity.class); startActivity(intent); break; // Perintah untuk memanggil kelas DataActivity (Lihat Data) case R.id.buttonDataBarang: intent = new Intent(MenuActivity.this, DataActivity.class); startActivity(intent); break; } }}

Setelah kelas MenuActivity.java sudah terbuat, sekarang buat terlebih dahulu layout untuk form menambahkan data. Dalam layout tersebut dibuat dengan menggunakan tiga buah edittext dan satu buah button. Berikut adalah source code dari layout activity_tambah_data.xml (untuk nama button atau segala macam atribut apabila ingin berbeda dapat disesuaikan sendiri).

Selanjutnya apabila layout untuk tambah data sudah terbuat, sekarang buat kelas activity untuk memanggil layout activity_tambah_data.xml yang sudah dibuat sehingga dapat tampil di interface Android dan difungsikan untuk proses tambah data. Beri nama kelas tersebut dengan nama kelas TambahActivity.java. Berikut adalah langkah langkah untuk membuat kelas TambahActivity.java (untuk nama variable dan segala macam atribut apabila ingin berbeda dapat disesuaikan sendiri). Untuk membuat kelas TambahActivity.java kurang lebihnya sama dengan membuat kelas MenuActivity. Yaitu nanti kelasnya extend ke activity dan implements ke OnClickListener dan deklarasi variable seperti edittext dan button, namun yang membedakan adalah pada perintah di method onClick. Berikut adalah source code dari kelas TambahActivity.java sebelum nanti ditambah perintah pada method onClick.package sqlite.modul.yufri.databasesqlite;import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** * Created by Yufri on 30/04/2015. */

public class TambahActivity extends Activity implements OnClickListener {

//inisilisasi elemen-elemen pada layout private Button buttonTambah; private EditText editTextNama; private EditText editTextMerk; private EditText editTextHarga;

//inisialisasi kontroller/Data Source private DBDataSource dataSource;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tambah_data);

buttonTambah = (Button) findViewById(R.id.buttonTambah); editTextNama = (EditText) findViewById(R.id.editTextNama); editTextMerk = (EditText) findViewById(R.id.editTextMerk); editTextHarga = (EditText) findViewById(R.id.editTextHarga);

// instanstiasi kelas DBDataSource dataSource = new DBDataSource(this);

//membuat sambungan baru ke database dataSource.open();

buttonTambah.setOnClickListener(this); }

//KETIKA Tombol Submit Diklik @Override public void onClick(View view) {

}}

Selanjutnya buat perintah di method onClick() dengan menginisialisasi data barang yang akan dimasukkan dengan memanggil getter yang sudah dibuat pada controller Barang.java. Berikut adalah source code lengkap dari kelas TambahActivity.java setelah ditambahkan perintah pada method onClick.package sqlite.modul.yufri.databasesqlite;

import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

/** * Created by Yufri on 30/04/2015. */

public class TambahActivity extends Activity implements OnClickListener {

//inisilisasi elemen-elemen pada layout private Button buttonTambah; private EditText editTextNama; private EditText editTextMerk; private EditText editTextHarga;

//inisialisasi kontroller/Data Source private DBDataSource dataSource;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tambah_data);

buttonTambah = (Button) findViewById(R.id.buttonTambah); editTextNama = (EditText) findViewById(R.id.editTextNama); editTextMerk = (EditText) findViewById(R.id.editTextMerk); editTextHarga = (EditText) findViewById(R.id.editTextHarga);

// instanstiasi kelas DBDataSource dataSource = new DBDataSource(this);

//membuat sambungan baru ke database dataSource.open();

buttonTambah.setOnClickListener(this); }

//KETIKA Tombol Submit Diklik @Override public void onClick(View view) {

// Inisialisasi data barang String nama = null; String merk = null; String harga = null; @SuppressWarnings("unused")

//inisialisasi barang baru (masih kosong) Barang barang = null; if(editTextNama.getText()!=null && editTextMerk.getText()!=null && editTextHarga.getText()!=null) { /* jika field nama, merk, dan harga tidak kosong * maka masukkan ke dalam data barang*/ nama = editTextNama.getText().toString(); merk = editTextMerk.getText().toString(); harga = editTextHarga.getText().toString(); }

switch (view.getId()) { case R.id.buttonTambah:

// insert data barang baru barang = dataSource.createBarang(nama, merk, harga);

//konfirmasi kesuksesan Toast.makeText(this, "Masuk Barang\n" + "Nama : " + barang.getNamaBarang() + "\n" + "Merk : " + barang.getMerkBarang() + "\n" +

"Harga : Rp. " + barang.getHargaBarang(), Toast.LENGTH_LONG).show(); break; } }}

Setelah semua langkah sudah dijalankan, sekarang kita ubah beberapa konfigurasi yang ada di file AndroidManifest.xml menjadi seperti di bawah ini. Tujuannya untuk mendaftarkan kelas yang sudah dibuat yaitu kelas MenuActivity.java dan TambahActivity.java

Apabila pada AndroidManifest.xml sudah selesai dibuat seperti diatas, sekarang kita lakukan demo aplikasi untuk tampilan menu dan proses tambah data.

Tampilan Menu

Tampilan Menu Tambah Data