Last Updated on 7 years by Mas Herdi
Oke, karena kebetulan saya sedang tidak bisa tidur. 😀 Maka saya memutuskan untuk membuat tutorial lanjutan dari tutorial tentang cara membuat aplikasi inventory untuk Android.
Seperti yang sudah dijelaskan sebelumnya, aplikasi ini nantinya akan menggunakan database SQLite dan memakai paradigma MVC, bagi yang belum mengerti. Silahkan baca pengantarnya dulu di sini.
Let’s Get Started
Langsung saja, pertama-tama kita buat sebuah project Android baru terlebih dahulu. Nama package nya terserah, tapi pada program ini nama package-nya adalah id.twooh.appinventory. Silahkan nanti disesuaikan. 🙂 Kemudian, karena aplikasi ini menggunakan paradigma MVC. Maka kita akan buat kelas modelnya, yaitu kelas Barang.java.
Kelas barang berfungsi untuk mendefinisikan objek barang beserta fungsi-fungsi dan atribut-atributnya. Yah seperti barang pada umumnya, mereka mempunyai nama, ID, merk, dan sebagainya. Inilah kode untuk kelas Barang.java.
package id.twooh.appinventory; public class Barang { private long id; private String nama_barang; private String merk_barang; private String harga_barang; public Barang() { } /** * @return the id */ public long getId() { return id; } /** * @param id the id to set */ public void setId(long id) { this.id = id; } /** * @return the nama_barang */ public String getNama_barang() { return nama_barang; } /** * @param nama_barang the nama_barang to set */ public void setNama_barang(String nama_barang) { this.nama_barang = nama_barang; } /** * @return the merk_barang */ public String getMerk_barang() { return merk_barang; } /** * @param merk_barang the merk_barang to set */ public void setMerk_barang(String merk_barang) { this.merk_barang = merk_barang; } /** * @return the harga_barang */ public String getHarga_barang() { return harga_barang; } /** * @param harga_barang the harga_barang to set */ public void setHarga_barang(String harga_barang) { this.harga_barang = harga_barang; } @Override public String toString() { return "Barang "+ nama_barang +" "+ merk_barang + " "+ harga_barang; } }
Oke, Model nya sekarang sudah ada. Sederhana bukan? Kelas tersebut hanya berisi atribut dan fungsi-fungsi getter dan setter. Setelah kelas barang selesai dibuat, kita akan melanjutkan dengan membuat kelas Database Helper.
Database Helper
Sesuai namanya, kelas ini berfungsi untuk memudahkan kita dalam membuat dan mengakses database SQLite yang akan dipakai oleh aplikasi. Kelas ini kebanyakan berisi method-method berkaitan dengan manajemen database, seperti onUpgrade() dan onCreate().
Database Helper sebenarnya sudah ada kelasnya pada Android, yaitu bernama SQLiteOpenHelper. Sehingga kita tinggal meng-extends kelas ini dari kelas SQLiteOpenHelper, atau dengan kata lain, melakukan pewarisan.
Inilah kode untuk kelas DBHelper.java :
package id.twooh.appinventory; //deklarasi import package import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; 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 = "data_inventori"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_NAME = "nama_barang"; public static final String COLUMN_MERK = "merk_barang"; public static final String COLUMN_HARGA = "harga_barang"; private static final String db_name ="inventori.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); // Auto generated } //mengeksekusi perintah SQL di atas untuk membuat tabel database baru @Override public void onCreate(SQLiteDatabase db) { db.execSQL(db_create); } // dijalankan apabila ingin mengupgrade database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(DBHelper.class.getName(),"Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } }
Oke, seperti yang bisa kita lihat di atas. Kelas DBHelper.java kebanyakan berisi konstanta-konstanta seperti nama tabel, nama database, nama kolom, dan sebagainya. Hal ini untuk memudahkan kita nantinya. Dimana ketika ingin menggunakan konstanta tersebut, kita tidak usah lagi menulis nama tabel berulang kali, namun cukup dengan mengaksesnya dari kelas DBHelper.
Kemudian ada juga konstanta berupa SQL statement, yang untuk mereka yang ahli database, sebenarnya perintah itu digunakan untuk membuat tabel database baru. Perintah SQL tersebut kemudian akan dieksekusi pada method onCreate().
Kira-kira sekian dulu postingan malam hari ini. Tutorial nanti akan dilanjutkan kembali.
Untuk demo-nya, kalian bisa cek dan download AppInventory di Google Play Store.
Jika ada yang ingin ditanyakan, silahkan tulis saja di kolom komentar. Semoga berguna!
hai pak,
saya mau tny, kalo menggunakan dua tabel gmn ya buat model nya?
Jadi saya ada 2 tabel.
1. tabel ( id_cat AI, category,)
2. tabel (id_aa AI, id_cat, barang)
pertanyaan saya :
1. model nya bagaimana?
2. untuk model tabel kedua bagaimana ya jika ada Foreign key?
thnks pak.. ^^
hai no name ^^
Sebenarnya gampang saja :
1. Untuk model, tetap sama. Cuma ditambahkan satu field untuk kategori.
2. Foreign key itu sebenarnya hanya berguna untuk database-nya, kalau untuk aplikasinya tidak harus benar2 memakai FK. Kita bisa ngambil langsung berdasarkan ID/field tertentu
sama2 🙂
Oh y mas.. itu bikin project javanya di eclipse kan?? ..maaf saya emang masih sangat baru untk mengenal android. sangat minim pengetahuan . mohon di bantu. saya tunggu ya mas?
Iya di Eclipse, kalau mau belajar Android dari awal. Bisa follow tutorial series yang ada di halaman ini –> http://www.twoh.web.id/mudengdroid-belajar-android-bersama-twohs-engineering/
mas,,, tanya kalo masukkin file audio di sqlitenya gmna mas??? biar bisa di panggil lewat butoon gtu makasih
Kalau audio setau saya nggak dimasukin ke database, tapi sebagai file biasa
kok syntax import saya salah ya ? padahal copas dr atas
keterangnnya “The import android cannot be resolved”
apa yg perlu d instal lagi yah suhu ?
tq 😀
Hmm… kayaknya eclipse-nya belum disetting buat coding Android ya ? 🙂
oh iya uda bs.. cuma ko sekarang nemu eror gini 😀
“Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details.”
apa karena belum instal versi 4.2 yah dr sdk ?
maap suhu banyak nanya.. 😀 pengen bisa soalnya
klo buat lebih dr 1 table apakah class dbhelper perlu lebih dr 1 juga ? menyesuaikan banyaknya table, atau cuku 1 saja hanya di dalanya kita buat syntax per table ?
tq
Hehe, santai gan 🙂 Banyak bertanya itu bagus ^^
Kalo tabelnya lebih dari satu DBHelper-nya satu saja cukup. Cuman nanti konstanta-nya ditambah sama SQL Create-nya dimodifikasi.
Regards
begitu kah suhu ? 😀 baru sx ni pegang java 😀 jadi bnyak ga ngeh nya
Komentarmu yang ini masuk spam, soalnya ada kata “online”-nya 🙂
Yoi, gimana udah jalan sekarang?
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(db_create_bus);
db.execSQL(db_create_client);
db.execSQL(db_create_trs);
}
begitu kah modifnya ? 😀
B-) (y)
suhu klo mau masukin datapicker ke data base nye gmn maaf suhu ane baru dalam pemograman ?
mohon bantuannya suhu
Maaf mas, mau tanya
bisa gk kita buat ataw lihat databasenya seperti PHPMyAdmin nya XAMPP disini?
caranya gimana ya?
terima kasih
🙂
Ada aplikasinya namanya SQLite Explorer, cari aja di sini 🙂
suhu, bagaimana ya kalau dari database yang sudah kita buat itu ingin dilakukan pencarian
kan kalau view di view all data, tapi bagaimana kalau kita ingin mencari didalam data yang kita view itu , misal menggunakan edit text sebagai perantaranya
saya belum paham ttg db helper, itu file’nya kita buat sendiri / udah ada di project’nya??
mohon pencerahan kakak . . 🙂
coba tambahin void, jadinya public void Barang.
Tapi kalo itu konstruktor class, berarti nama kelasmu beda sama nama konstruktornya
eh sori ini bales komennya albar
dbhelper bikin sendiri
kalau untuk mencetak data dari sqllite ke excel, gimana caranya ?
bisa saja, tapi itu pasti lebih kompleks… coba modifikasi dari tutorial ini 🙂 http://www.twoh.web.id/2011/10/java-ekspor-data-ke-dalam-format-excel-xls-dari-database-mysql/
kok pas di bagian ini :
public Barang()
{
}
dibilangnya ad yg error ya bang, “return type of the methd is missing”
File “inventori.db” tersimpan di mana lokasinya?
suhu, mau tanya..
kenapa saya selalu error di @override ya?
harus di hapus dulu @override, errornya hilang.
bantu dong suhu..
Ketika implementasinya benar, seharusnya tidak error. Mungkin kamu pakai eclipse versi lama, coba diupdate.
@Override itu artinya methodnya sudah ada di superclass, tapi kamu bikin nimpa method itu dengan method baru buatanmu 🙂
sorry gan, saya boleh nanya cara awal biar bisa ngoding ini pake eclipse kah ? trus saya harus download apa lagi ? saya bner2 dari 0. karna di kampus baru diajarin desktop , web app aja gan 😀 mohon web link yg tepat biar saya plajarin baru ke tahap ini (di web agan).
Yup 🙂
Pelajari dari sini saja gan http://www.twoh.web.id/mudengdroid-belajar-android-bersama-twohs-engineering/ 🙂
Untuk instalasi Eclipse, biar gampang (nggak perlu download plugin dsb) download ADT Bundle yang udah satu paket 🙂 http://developer.android.com/sdk/index.html?utm_source=weibolife
Bang mau tanya dong, itu class Barang.java dan DBHelper.java nya buatnya di mana?
apa sama kaya bikin class biasa? yaitu klik kanan package->new->class?
apa beda?
maklum newbie hehe
yup, sama
Mas, sy udah coba tapi muncul error ‘Unfortunately app has stopped’ pas sy mau submit.
Sy udah daftarin activity nya ke file manifest.xml. Mohon bantuannya, terima kasih
mas, saya sedang membuat aplikasi kamus, akan tetapi saat aplikasi di compile malah tabel didalam databasenya gak ada lagi, pdhal databasenya sudah ada tabel. dibuat “no such tabel nama tabel”.
kalau errornya “no such table nama tabel” itu knp ya?
gan mau tanya sebelumnya minta maaf soalnya aku belum nyambung cara awal bikin database. kalau mau manggil database kemelalui button gimana caranya.
Terima kasih atas tutorial pembelajaran SQLite ini.
Saya coba praktekan 🙂
pak sy mau nanya donk, sy sudah coba cm sy bedain nama-nama variable tapi kenapa tetep error dibagian ini ya.
dibagian public class AlmagHelper extends SQLiteOpenHelper {
keterangan errornya gini:
“The type AlmagHelper must implement the inherited abstract method SQLiteOpenHelper.onCreate(SQLiteDatabase)”
android:minSdkVersion=”8″
android:targetSdkVersion=”15″
terimksih sebelumnya pak 🙂
Itu errornya karena kamu extends ke kelas lain, tapi belum implement method yang ada di kelas itu.
klik tombol error yang muncul di baris
, dan pilih “Add Unimplemented Method”
bagus sekali. saya juga punya artikel dan tutorial terkait dengan SQLite. semoga bisa menjadi bahan belajar juga untuk pemula
http://udinulis.blogspot.com/2010/02/sqlite-si-simple-yang-bertenaga.html
permisi kak, mau naya gimana cara menampilkan data dari spinner melalui data dalam database ??
lalu cara menyambungkan peta sama database gimana ya ??
mohon pencerahan…heheheh
terima kasih
untuk menyambungkan maps dengan database di Android Maps API v2 bisa cek di sini http://www.twoh.co/2012/10/implementasi-check-in-pada-location-based-service-di-android-end/
numpang nanya gan…. scrip yg agan buat.. tu di pastekan kmn ya…. .. ane benar newbie gan… ane pakai ubuntu 14.04, tq sebelumnya
Ikuti step by step tutorial di atas aja gan hehe
maaf mau tanya, itu yang di buat (misal, kelas barang.java seperti diatas) buatnya di bagian apa ya?
apakah “res” , “layout” , “src” , atau apa ya?
mohon pencerahan nya. saya newbi
menggunakan eclipse
kang mau nanya ini pengecekan coding saya pada android studio ga aktif kenapa ya?
hmm, barangkali karena lagi progress building gradle gan… coba ditunggu
Saya tertarik dengan tulisan Anda. Saya juga mempunyai informasi mengenai basis data Oracle dan pendaftaran kursus Oracle yang bisa Anda kunjungi di http://lpug.gunadarma.ac.id/sertifikasi/
gan, tanya nih
bagian menu.xml , “android:text”
bagian edit_data , “” pertama dan kedua
bagian create_data.xml , “android:hint”
pada erroer tuh, gmna cara fix yaa ??
thanks gan,,,
ANDA MENULIS :
emudian, karena aplikasi ini menggunakan paradigma MVC. Maka kita akan buat kelas modelnya, yaitu kelas Barang.java.
TETAPI ANDA tidak menjelaskan cara membuat clas BARANG. Mohon untuk lebih berpihak kepada newby and otodidacer. Maaf dan Terimakasih
Jika dibaca lebih teliti, source code untuk class Barang.java sudah ada pada artikel di atas.
Untuk membuatnya sangat mudah tinggal buat file baru, bernama Barang.java
aduh mas bro, gimana cara menemukan sqlopenhelpernya di eclipe yaa,, maaf saya bener2 newbie. hehe
pakai autocomplete aja gan
mau tanya dong,, tau cara mengimport data di excel yang ratusan ribu data ke database Sqlite ga?
Belum tau haha
gan bisa tanya menegenai kamus gan
sya buat kamus tpi ko datanya hnya 3 sja ditambh lg ko eror gt gan
tpi datanya it pngenya tak taruh di classnya langsung tpi jga bisa diupdate
Gan mau tanya, bagaimana cara meliat colum pada table sudah terisi atau tidak dengan menggunakan fungsi IF
kasusx jika table sudah terisi maka akan di arahkan ke activity lain
if(table sudah ada isi) {
activity2 muncuk
}else{
activity 1 muncul mohon pencerahan gan
}
ada fungsinya untuk cek apakah tabel itu kosong atau tidak, tapi saya lupa :p
Cara gampangnya bisa dengan melakukan query SELECT ALL di table tersebut dan dihitung resultnya, kalau resultnya nol berarti tabel itu kosong.
Saya ingin bertanya, apa sih fungsi dari get dan set? dan lalu bagaimana jika melakukan perhitungan seperti saya menambahkan diskon lalu saya ingin mengetahui hasil setelah diskon atau berapa yang harus dibayarkan
Get set itu untuk menuliskan dan membaca variabel yang diset pada sebuah class, Perhitungan dengan diskon bisa menggunakan operasi matematika seperti biasa, seperti tambah kurang kali bagi dan sebagainya.
Nanya lagi mas, saya baru belajar android. Nah perhitungannya di class mana yaa mas’? di create data yaa? coba contohin programnya dong mas biat saya mengerti. Makasih
gan mw nanya nih, klo nampilin file pdf yang ada di database sqllitenya gmn ya?
maaf masih baru…
mohon bantuannya….
Kalau seperti itu yang disimpan di database SQLitenya nama file dan path nya saja. File nya sendiri tetap disimpan di sdcard/ storage Androidnya
Om… sy mau tanya bagaimana caranya membuat database android apabila bentuk datanya seperti Ini :
Database
Tanggal : 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
Bulan : 1,2,3,4,5,6,7,8,9,10,11.12
Tahun : 2016, 2017
Hasil : pada tampilan
1+1+2016=aaaaaaaaaaaaaa
2+1+2016=bbbbbbbbbbbbbbb
3+1+2016=cccccccccccccccccc
4+1+2016=dddddddddddddd
5+1+2016=eeeeeeeeeeeeee
6+1+2016=fffffffffffffffffffffff
Dan seterusnya
31+1+2016=zzzzzzzzzzzzzzzzzz
Ini pasti PR ya, kalo PR atau tugas kuliah/rumah silahkan coba dikerjakan sendiri sementoknya jika tidak tahu baru bertanya 🙂
mas, gmn ya bikin supaya kalo submit yang ga ada inputan nya jadi ga bisa kesubmit, punya mas nya kan biar inputan kosong tetap bisa disubmit. terimakasih sebelum nya ya 🙂
Oh, ada caranya harus dicek apakah edittext nya kosong / nggak
kalo cara insert gambar di SQLite itu gmn ya mas?
mas, saya buat databse multitable seperti contoh comment sebelumnya, tidak ada yng error di listing program, tp saat di running, saya liat ke file manager, databasenya tidak terbuat. itu knpa ya? mohon bantuanya 🙂
fumgsi method barang yg kosong ini untuk apa ya?
public Barang{
}
mas, saya udah buat sama persis seperti punyanya mas tapi kok eror kayak gini mas “java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.yudha.e_ktp_project/com.example.yudha.e_ktp_project.MainActivity3}: android.database.sqlite.SQLiteException: near “(“: syntax error (code 1): , while compiling: create table ktp( _id integer primary key autoincrement, namavarchar(50) not null,nikvarchar(50) not null,tempatvarchar(50) not null,tglvarchar(50) not null,alamatvarchar(100) not null,kecvarchar(50) not null,kelvarchar(50) not null,sexvarchar(10) not null,jobvarchar(50) not null,agamavarchar(10) not null,kpvarchar(2) not null,statusvarchar(10) not null);” mohon pencerahannya
kalo nge-join manggilnya gimana ya mas? 😐 maaf nyubie banget saya
seperti SQL join biasa