Pada tutorial pemrograman android kali ini kita akan membahas mengenai CRUD SQLite Database.
Apa itu CRUD ? CRUD ini adalah singkatan dari Create Read Update Delete. Apa itu SQLite ? SQLite ini
kalau menurut versi saya adalah tempat penyimpanan suatu data atau database yang tempatnya ada
di local storage device android. Kalau dari situs resminya SQLite ini adalah SQLite is a opensource SQL
database that stores data to a text le on a device. Android comes in with built in SQLite database
implementation. SQLite supports all the relational database features. In order to access this database,
you don’t need to establish any kind of connections for it like JDBC,ODBC e.t.c
https://farizdotid.com/crud-sqlite-android-studio/ 1/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
Pada tutorial pemrograman android ini, untuk membuat databasenya kita akan menggunakan bantuan
library Greendao. Library Greendao ini adalah library buatan dari GreenRobot, Nah daripada bingung
saya akan mengkutip istilah Greendao ini itu apa. Menurut situs resminya : greenDAO is an open source
Android ORM making development for SQLite databases fun again. It relieves developers from dealing
with low-level database requirements while saving development time. SQLite is an awesome embedded
relational database. Still, writing SQL and parsing query results are quite tedious and time-consuming
tasks. greenDAO frees you from these by mapping Java objects to database tables (called ORM,
“object/relational mapping”). This way you can store, update, delete, and query for Java objects using a
simple object oriented API.
Maximum performance (probably the fastest ORM for Android); our benchmarks are open
sourced too
Easy to use powerful APIs covering relations and joins
Minimal memory consumption
Small library size (<100KB) to keep your build times low and to avoid the 65k method limit
Database encryption: greenDAO supports SQLCipher to keep your user’s data safe
Strong community: More than 5.000 GitHub stars show there is a strong and active community
Nah, Dari sini kalian sudah tau maksud dari tujuan artikel Cara Membuat CRUD SQLite Database
Android Studio ini itu apa. Sekarang kita masuk ke bagaimana cara implementasi CRUD SQLite
Database, lets coding!
https://farizdotid.com/crud-sqlite-android-studio/ 2/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
#NOTE :
Untuk penambahan kodenya kalian hanya cukup meng-copy paste / mengetik yang ada tanda “Add this
line”nya saja.
1 // Top-level build file where you can add configuration options common to all sub-projects/modul
2
3 buildscript {
4 repositories {
5 google()
6 jcenter()
7 mavenCentral()
8 }
9 dependencies {
10 classpath 'com.android.tools.build:gradle:3.3.1'
11 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // <-- Add this line
12 // NOTE: Do not place your application dependencies here; they belong
13 // in the individual module build.gradle files
14 }
15 }
16
17 allprojects {
18 repositories {
19 google()
20 jcenter()
21
22 }
23 }
24
25 task clean(type: Delete) {
26 delete rootProject.buildDir
27 }
Sync Project
Jika semua sudah tercopy – paste kalian bisa langsung mengklik action button “Sync Now” agar proses
pengambilan library segera diproses.
Buatlah sebuah package folder dengan nama – nama folder sebagai berikut :
-create
-edit
-home
-utils
–database
1 @Entity
2 public class TblPengeluaran {
3
4 @Id(autoincrement = true)
5 private Long idTblPengeluaran;
6
7 private String pengeluaran;
8 private int nominal;
9 }
#NOTE :
Anotasi @Entitiy ini adalah untuk kasih tau ke generatornya si Greendao bahwa class ini adalah untuk
menjadi struktur tabelnya. Lalu untuk @Id(autoincrement = true) ini adalah kasih tau ke generator
bahwa idTblPengeluaran ini bentuknya unik atau bertambah setiap saat. Jadi kurang lebih maksud
class ini untuk membuat struktur tabel pada databasenya.
Build Generator
Jika kalian sudah membuat class untuk pengaturan tabelnya, Sekarang kamu klik icon palu ( build ) lalu
tungu beberapa saat. Fungsi itu untuk menjalankan generator Greendaonya.
https://farizdotid.com/crud-sqlite-android-studio/ 5/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
Nanti secara otomatis Greendao akan membuat class untuk kebutuhan development kita. Hasil kode
yang kita build adalah sebagai berikut :
1 package com.app.samplecrudgreendao.utils.database;
2
3 import org.greenrobot.greendao.annotation.Entity;
4 import org.greenrobot.greendao.annotation.Id;
5 import org.greenrobot.greendao.annotation.Generated;
6
7 /**
8 * Created by Fariz Ramadhan.
9 * website : https://farizdotid.com/
10 * github : https://github.com/farizdotid
11 * linkedin : https://www.linkedin.com/in/farizramadhan/
12 */
13 @Entity
14 public class TblPengeluaran {
15
16 @Id(autoincrement = true)
17 private Long idTblPengeluaran;
18
19 private String pengeluaran;
20 private int nominal;
21 @Generated(hash = 388400954)
22 public TblPengeluaran(Long idTblPengeluaran, String pengeluaran, int nominal) {
23 this.idTblPengeluaran = idTblPengeluaran;
24 this.pengeluaran = pengeluaran;
25 this.nominal = nominal;
26 }
27 @Generated(hash = 177408923)
28 public TblPengeluaran() {
29 }
30 public Long getIdTblPengeluaran() {
31 return this.idTblPengeluaran;
32 }
33 public void setIdTblPengeluaran(Long idTblPengeluaran) {
34 this.idTblPengeluaran = idTblPengeluaran;
35 }
36 public String getPengeluaran() {
37 return this.pengeluaran;
38 }
39 public void setPengeluaran(String pengeluaran) {
40 this.pengeluaran = pengeluaran;
41 }
42 public int getNominal() {
43 return this.nominal;
44 }
45 public void setNominal(int nominal) {
46 this.nominal = nominal;
47 }
48 }
https://farizdotid.com/crud-sqlite-android-studio/ 6/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
#NOTE :
Pada value “catatpengeluaran_db” ini adalah nama databasenya. Class ini berfunsi untuk kebutuhan
inisialisasi pengaturan Greendao, Nantinya kalian hanya tinggal panggil kode ini saja untuk memanggil
fungsi Greendao seperti get tabel pada database ataupun kebutuhan-kebutuhan SQLite lainnya.
Menambahkan fungsi
Pada class FunctionHelper buatlah sebuah fungsi untuk meng-convert suatu nilai ke dalam format
uang rupiah. Untuk kodenya seperti ini :
1 /*
2 Fungsi untuk mengconvert sebuah nilai menjadi format Rupiah.
3 Contoh : 1000 akan menjadi Rp1.000
4 */
5 public static String convertRupiah(int nominal){
6 Locale localeID = new Locale("in", "ID");
7 NumberFormat formatRupiah = NumberFormat.getCurrencyInstance(localeID);
8 return formatRupiah.format(nominal);
9 }
https://farizdotid.com/crud-sqlite-android-studio/ 7/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
22 android:textSize="16sp"
23 android:textColor="@color/primary_text"
24 android:fontFamily="@font/notosans_regular"/>
25 </android.support.design.widget.TextInputLayout>
26
27 <android.support.design.widget.TextInputLayout
28 android:layout_width="match_parent"
29 android:layout_height="wrap_content"
30 android:layout_marginTop="16dp"
31 android:hint="@string/title_nominal">
32
33 <EditText
34 android:id="@+id/etNominal"
35 android:layout_width="match_parent"
36 android:layout_height="wrap_content"
37 android:inputType="number"
38 android:textSize="16sp"
39 android:textColor="@color/primary_text"
40 android:fontFamily="@font/notosans_regular" />
41 </android.support.design.widget.TextInputLayout>
42
43 <Button
44 android:id="@+id/btnSimpan"
45 android:layout_width="match_parent"
46 android:layout_height="wrap_content"
47 android:fontFamily="@font/notosans_bold"
48 android:layout_marginTop="16dp"
49 android:text="@string/title_simpan"
50 android:textSize="14sp"
51 android:textColor="@android:color/white"
52 android:background="@color/colorPrimaryDark"/>
53 </LinearLayout>
Inisialisasi Komponen
Pada class CreateActivity lalu inisialisasikan komponen widget yang sudah kita buat pada layout
activity_create dan inisialisasi beberapa class untuk kebutuhan Create ini.
1 @BindView(R.id.etPembelian)
2 EditText etPembelian;
3 @BindView(R.id.etNominal)
4 EditText etNominal;
5 @BindView(R.id.btnSimpan)
6 Button btnSimpan;
7
8 private Unbinder unbinder;
9 private DaoSession daoSession;
1 Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
2 getSupportActionBar().setDisplayShowHomeEnabled(true);
3 getSupportActionBar().setTitle("Buat pengeluaran");
4
5 unbinder = ButterKnife.bind(this);
6 daoSession = DaoHandler.getInstance(this);
7
8 btnSimpan.setOnClickListener(new View.OnClickListener() {
9 @Override
10 public void onClick(View v) {
11 String pembelian = etPembelian.getText().toString();
12 String nominal = etNominal.getText().toString();
13
14 if (pembelian.isEmpty() || nominal.isEmpty()){
15 Toast.makeText(CreateActivity.this, "Data tidak boleh kosong", Toast.LENGTH_
16 } else {
17 TblPengeluaran tblPengeluaran = new TblPengeluaran();
https://farizdotid.com/crud-sqlite-android-studio/ 8/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
18 tblPengeluaran.setPengeluaran(pembelian);
19 tblPengeluaran.setNominal(Integer.parseInt(nominal));
20 daoSession.getTblPengeluaranDao().insert(tblPengeluaran);
21
22 Toast.makeText(CreateActivity.this, "Berhasil menginput data",
23 Toast.LENGTH_SHORT).show();
24 startActivity(new Intent(CreateActivity.this, HomeActivity.class)
25 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR
26 finish();
27 }
28 }
29 });
https://farizdotid.com/crud-sqlite-android-studio/ 10/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
54 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @
55 View view = inflater.inflate(R.layout.fragment_dialog_edit, container);
56 unbinder = ButterKnife.bind(this, view);
57 return view;
58 }
59
60 @Override
61 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
62 super.onViewCreated(view, savedInstanceState);
63
64 etPembelian.setText(mPembelian);
65 etNominal.setText(String.valueOf(mNominal));
66
67 btnSimpan.setOnClickListener(new View.OnClickListener() {
68 @Override
69 public void onClick(View v) {
70 String pembelian = etPembelian.getText().toString();
71 String nominal = etNominal.getText().toString();
72
73 /*
74 Fungsi ini iuntuk mengirim data berupa id, pembelian, dan nominal ke
75 activity/fragment yang di implementasinya.
76 */
77 editDialogListener.requestUpdate(mId, pembelian, Integer.parseInt(nominal));
78 getDialog().dismiss();
79 }
80 });
81 }
82
83 @Override
84 public void onDestroyView() {
85 super.onDestroyView();
86 unbinder.unbind();
87 }
88
89 /*
90 Interface EditDialogListener ini untuk digunakan dalam class yang kita implement nantinya.
91 EditDialogListener ini berisi fungsi requestUpdate dengan parameter id, pembelian, nominal.
92 Nah nantinya data yang ada di EditDialogFragment ini kita akan parsing ke activity/frgament
93 diimplementnya.
94
95 Sebagai contoh : Dari edit dialog ini user meng-inputkan pembelian "Baju Supreme" dan nomin
96 "5000", maka si activity/fragment implementnya akan menerima data tersebut. Data tersebut n
97 kita akan olah sesuai dengan kebtuuhan.
98 */
99 public interface EditDialogListener {
100 void requestUpdate(long id, String pembelian, int nominal);
101 }
102 }
https://farizdotid.com/crud-sqlite-android-studio/ 11/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
14 @Override
15 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
16 View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_pengeluaran,
17 parent, false);
18 return new ViewHolder(view);
19 }
20
21 @Override
22 public void onBindViewHolder(ViewHolder holder, int position) {
23 TblPengeluaran item = list.get(position);
24
25 String pengeluaran = item.getPengeluaran();
26 int nominal = item.getNominal();
27
28 holder.tvPengeluaran.setText(pengeluaran);
29
30 Locale localeID = new Locale("in", "ID");
31 NumberFormat formatRupiah = NumberFormat.getCurrencyInstance(localeID);
32 holder.tvNominal.setText(formatRupiah.format(nominal));
33 }
34
35 @Override
36 public int getItemCount() {
37 return list.size();
38 }
39
40 public void clear() {
41 int size = this.list.size();
42 this.list.clear();
43 notifyItemRangeRemoved(0, size);
44 }
45
46 public class ViewHolder extends RecyclerView.ViewHolder {
47
48 @BindView(R.id.tvPengeluaran)
49 TextView tvPengeluaran;
50 @BindView(R.id.tvNominal)
51 TextView tvNominal;
52 @BindView(R.id.ivDelete)
53 ImageView ivDelete;
54
55 public ViewHolder(View itemView) {
56 super(itemView);
57 ButterKnife.bind(this, itemView);
58
59 ivDelete.setOnClickListener(new View.OnClickListener() {
60 @Override
61 public void onClick(View v) {
62 mAdapterCallback.onDelete(getAdapterPosition());
63 }
64 });
65
66 itemView.setOnLongClickListener(new View.OnLongClickListener() {
67 @Override
68 public boolean onLongClick(View v) {
69 mAdapterCallback.onLongClick(getAdapterPosition());
70 return true;
71 }
72 });
73 }
74 }
75
76 public interface PengeluaranAdapterCallback {
77 void onLongClick(int position);
78 void onDelete(int position);
79 }
80 }
Jika masih ada error pada bagian layout dan beberapa komponen widgetnya itu karena kita belum
membuat le layout untuk kebutuhan adapternya. Buatlah sebuah layout baru dengan nama
https://farizdotid.com/crud-sqlite-android-studio/ 12/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
https://farizdotid.com/crud-sqlite-android-studio/ 13/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
11 android:layout_height="wrap_content"
12 android:theme="@style/AppTheme.AppBarOverlay">
13
14 <android.support.v7.widget.Toolbar
15 android:id="@+id/toolbar"
16 android:layout_width="match_parent"
17 android:layout_height="?attr/actionBarSize"
18 android:background="?attr/colorPrimary"
19 app:popupTheme="@style/AppTheme.PopupOverlay" />
20
21 </android.support.design.widget.AppBarLayout>
22
23 <include layout="@layout/content_main" />
24
25 <android.support.design.widget.FloatingActionButton
26 android:id="@+id/fabAdd"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content"
29 android:layout_gravity="bottom|end"
30 android:layout_margin="@dimen/fab_margin"
31 app:srcCompat="@drawable/ic_add" />
32
33 </android.support.design.widget.CoordinatorLayout>
https://farizdotid.com/crud-sqlite-android-studio/ 14/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
42 @Override
43 public void onClick(View view) {
44 startActivity(new Intent(HomeActivity.this, CreateActivity.class));
45 }
46 });
47 }
48
49 /*
50 Fungsi untuk mengirim data dari adapter ke edit dialog.
51 Disini memanggil EditDialogFragment dengan parameter id, pembelian, dan nominal.
52 */
53 @Override
54 public void onLongClick(int position) {
55 long id = tblPengeluaranList.get(position).getIdTblPengeluaran();
56 String pembelian = tblPengeluaranList.get(position).getPengeluaran();
57 int nominal = tblPengeluaranList.get(position).getNominal();
58
59 FragmentManager fm = getSupportFragmentManager();
60 EditDialogFragment editDialogFragment = EditDialogFragment.newInstance(id, pembelian, n
61 editDialogFragment.show(fm, "dialog_edit");
62 }
63
64 /*
65 Fungsi delete data. Sebelum menghapus data ada semacam popup terlebih dahulu agar meyakinka
66 */
67 @Override
68 public void onDelete(int position) {
69 String name = tblPengeluaranList.get(position).getPengeluaran();
70 showDialogDelete(position, name);
71 }
72
73 /*
74 Fungsi untuk men-totalkan semua nominal yang ada didalam tabel TblPengeluaran.
75 */
76 private int getTotal(){
77 int total = 0;
78 for (int i = 0; i < tblPengeluaranList.size(); i++){
79 int nominal = tblPengeluaranList.get(i).getNominal();
80 total = total + nominal;
81 }
82 return total;
83 }
84
85 /*
86 Fungsi untuk memanggil Alert Dialog. Alert dialog ini berfungsi untuk meyakinkan user kemba
87 apakah datanya ingin dihapus atau tidak.
88 */
89 private void showDialogDelete(final int position, String name){
90 AlertDialog.Builder builder1 = new AlertDialog.Builder(HomeActivity.this);
91 builder1.setMessage("Yakin untuk menghapus item "+ name + " ?");
92 builder1.setCancelable(true);
93
94 builder1.setPositiveButton(
95 "Ya",
96 new DialogInterface.OnClickListener() {
97 public void onClick(DialogInterface dialog, int id) {
98 /*
99 Fungsi delete suatu data bedasarkan idnya.
100 */
101 long idTbl = tblPengeluaranList.get(position).getIdTblPengeluaran();
102 daoSession.getTblPengeluaranDao().deleteByKey(idTbl);
103
104 tblPengeluaranList.remove(position);
105 pengeluaranAdapter.notifyItemRemoved(position);
106 pengeluaranAdapter.notifyItemRangeChanged(position, tblPengeluaranList.
107
108 tvTotal.setText(FunctionHelper.convertRupiah(getTotal()));
109
110 dialog.dismiss();
111 }
112 });
113
114 builder1.setNegativeButton(
https://farizdotid.com/crud-sqlite-android-studio/ 15/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
115 "Tidak",
116 new DialogInterface.OnClickListener() {
117 public void onClick(DialogInterface dialog, int id) {
118 dialog.cancel();
119 }
120 });
121
122 AlertDialog alert11 = builder1.create();
123 alert11.show();
124 }
125
126 /*
127 Fungsi ini untuk menerima data yang dikirimkan dari EditDialogFragment ke HomeActivity.
128 Data yang dikirimkan dari EditDialogFragment ini ada id, pembelian, dan nominal. Lalu
129 setelah mendapatkan datanya panggil fungsi update dari Greendao.
130 */
131 @Override
132 public void requestUpdate(long id, String pembelian, int nominal) {
133 TblPengeluaran tblPengeluaran = daoSession.getTblPengeluaranDao().load(id);
134 tblPengeluaran.setPengeluaran(pembelian);
135 tblPengeluaran.setNominal(nominal);
136 daoSession.getTblPengeluaranDao().update(tblPengeluaran);
137
138 pengeluaranAdapter.notifyDataSetChanged();
139 tvTotal.setText(FunctionHelper.convertRupiah(getTotal()));
140 }
141 }
Run application
Silahkan jalankan aplikasi.
Screenshot Aplikasi
https://farizdotid.com/crud-sqlite-android-studio/ 16/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
https://farizdotid.com/crud-sqlite-android-studio/ 17/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
https://farizdotid.com/crud-sqlite-android-studio/ 18/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
Sekian artikel Tutorial Pemrograman Android mengenai Cara Membuat CRUD SQLite Database
Android Studio. Semoga bermanfaat
farizdotid
Seorang manusia biasa yang mempunyai fokus ke bidang pemrograman android dan ngeblog mengenai teknologi.
5 Comments
@BindView(R.id.rvNote)
@BindView(R.id.tvTotal)
Maaf mau tanya, untuk pengamblilan id rvNote sama rvTotal itu dari mana?
REPLY
Itu dari layoutnya gan. Di layout xmlnya kan kita de ne idnya, nah dari situ gan.
REPLY
pak kenapa pada saat sync terjadi ERROR: Could not nd method greendao() for arguments
[build_cazks09rxam0pyyl5ap9d46lp$_run_closure3@215bf7eb] on project ‘:app’ of type
org.gradle.api.Project.
https://farizdotid.com/crud-sqlite-android-studio/ 19/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
REPLY
REPLY
Cara Membuat Fungsi Open Whatsapp di Aplikasi Android · June 4, 2019 at 4:32 pm
REPLY
Leave a Reply
Name *
Email *
Website
POST COMMENT
This site uses Akismet to reduce spam. Learn how your comment data is processed.
https://farizdotid.com/crud-sqlite-android-studio/ 20/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
Komentar Developer
farizdotid on Tutorial Login dan Register Menggunakan Retro t2 dan API Server
Cara Membuat Text Bold, Italic, Underline di strings.xml on Cara Membuat Custom Font Pada Aplikasi
Android
Cara Membuat Text Bold, Italic, Underline di strings.xml on Cara Menambahkan Loading di Glide Android
Related Posts
https://farizdotid.com/crud-sqlite-android-studio/ 21/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
PEMROGRAMAN ANDROID
https://farizdotid.com/crud-sqlite-android-studio/ 22/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
PEMROGRAMAN ANDROID
https://farizdotid.com/crud-sqlite-android-studio/ 23/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
PEMROGRAMAN ANDROID
LOWONGAN KERJA IT
https://farizdotid.com/crud-sqlite-android-studio/ 24/24