Database akan digunakan untuk menyimpan data yang terstruktur dan berulang. Berbeda dengan variable tentunya. Database ini sangat berguna untuk memudahkan kita untuk menyimpan serta menggunakan kembali data. Dan kali ini kita akan membahasnya dengan menggunakan Sqlite Database.
Contoh Project Sqlite CRUD masrahman28.blogspot.com |
Mungkin itu saja ya penjelasannya, kita langsung membuat project dengan menggunakan sqlite. Buat sebuah project dengan nama Sqlite
Membuat Project Sqlite masrahman28.blogspot.com |
Jika sudah kita sedikit jelaskan dulu konsep project yang akan kita buat adalah membuat CRUD untuk data peserta yang isinya nama dan alamat saja simpel kok seperti gambar di atas. Pertama-tama kita buat dulu ya class modelnya kita buat satu buat class dengan nama PesertaModel.java
Ingat ya biasakan di ketik aja coding-coding dari tutorialnnya biar kita terbiasa dan akan memudahkan kita dalam mengerjakan project selanjutnya
package com.example.sqlite; public class PesertaModel { int id; String nama; String alamat; public PesertaModel(int id, String nama, String alamat) { this.id = id; this.nama = nama; this.alamat = alamat; } public int getId() { return id; } public String getNama() { return nama; } public String getAlamat() { return alamat; } }
Untuk dapat menggunakan database sqlite kita akan membuat sebuah class Helper yang telah disediakan yang nantinya akan kita kembangkan dengan beberapa penambahan fungsi CRUD. Sehingga proses-proses yang berkaitan dengan database akan di proses pada class tersebut. Kita buat satu buah class lagi dengan nama DatabaseHelper.java yang nanti akan extends ke SQLiteOpenHelper dimana kita harus memiliki dua buah method super class yaitu onCreate() dan onUpgrade() sisanya kita buat untuk pengolahan data
package com.example.sqlite; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class DatabaseHelper extends SQLiteOpenHelper { private static final int VERSION = 1; private static final String DBNAME = "db_peserta"; private static final String TABLENAME = "peserta"; private static String colID = "id"; private static String colNama = "nama"; private static String colAlamat = "alamat"; public DatabaseHelper(Context context) { super(context, DBNAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { String createTable = "CREATE TABLE " + TABLENAME + " (" + colID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + colNama + " TEXT," + colAlamat + " TEXT)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS "+ TABLENAME); onCreate(db); } public void insertData(String nama, String alamat){ String insertData = "INSERT INTO "+ TABLENAME + " ("+ colNama +","+colAlamat+") VALUES ('"+nama +"', '"+alamat+"')"; this.getWritableDatabase().execSQL(insertData); } public void updateData(int id, String nama, String alamat){ String updateData = "UPDATE "+TABLENAME+ " SET "+ colNama + "= '"+nama +"', "+colAlamat + "= '"+alamat + "' WHERE "+colID +" ="+id; this.getWritableDatabase().execSQL(updateData); } public void deleteData(int id){ String deleteData = "DELETE FROM "+TABLENAME +" WHERE id="+id; this.getWritableDatabase().execSQL(deleteData); } public PesertaModel getData(int id){ PesertaModel model = null; String selectData = "SELECT * FROM "+TABLENAME + " WHERE id="+String.valueOf(id); Cursor data = this.getWritableDatabase().rawQuery(selectData, null); if(data.moveToFirst()){ model = new PesertaModel(Integer.parseInt(data.getString(data.getColumnIndex(colID))), data.getString(data.getColumnIndex(colNama)), data.getString(data.getColumnIndex(colAlamat))); } return model; } public List<PesertaModel> getAll(){ List<PesertaModel> model = new ArrayList<>(); String selectData = "SELECT * FROM "+TABLENAME; Cursor data = this.getWritableDatabase().rawQuery(selectData, null); if(data.moveToFirst()){ do{ model.add(new PesertaModel(Integer.parseInt(data.getString(data.getColumnIndex(colID))), data.getString(data.getColumnIndex(colNama)), data.getString(data.getColumnIndex(colAlamat)))); }while (data.moveToNext()); } return model; } }
Jika sudah maka kita kembali ke activity_insert.xml dimana kita akan menambahkan form untuk penambahan data peserta dengan dua buah EditText dan dua buah Button seperti di bawah
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.sqlite.InsertActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical" android:gravity="center"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Tambah Data Peserta" android:textAlignment="center" android:textSize="18sp" android:textStyle="bold" /> <EditText android:layout_marginTop="10dp" android:id="@+id/etNama" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nama" android:gravity="center"/> <EditText android:id="@+id/etAlamat" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Alamat" android:gravity="center"/> <Button android:layout_marginTop="10dp" android:id="@+id/btnSimpan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Simpan" android:paddingRight="30dp" android:paddingLeft="30dp" android:background="@android:color/holo_blue_dark" android:textColor="@android:color/white" /> </LinearLayout> <Button android:layout_marginTop="10dp" android:id="@+id/btnViewdata" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Lihat Data" android:paddingRight="30dp" android:paddingLeft="30dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" android:background="@android:color/holo_orange_dark" android:textColor="@android:color/white" /> </RelativeLayout>
Biarkan dulu okey untuk proses insert nya karena klo dari depan ngoding nya nanti bolak balik haha, sekarang kita akan membuat terlebih dahulu satu buah activity dengan nama UpdateActivity yang akan kita gunakan ketika merubah data peserta. Caranya klik kanan di package name dari project kita dan pilih yang Empty Activity
Menambah Activity masrahman28.blogspot.com |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.sqlite.UpdateActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical" android:gravity="center"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Ubah Data Peserta" android:textAlignment="center" android:textSize="18sp" android:textStyle="bold" /> <EditText android:layout_marginTop="10dp" android:id="@+id/etNama" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nama" android:gravity="center"/> <EditText android:id="@+id/etAlamat" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Alamat" android:gravity="center"/> <Button android:layout_marginTop="10dp" android:id="@+id/btnSimpan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Simpan" android:paddingRight="30dp" android:paddingLeft="30dp" android:background="@android:color/holo_blue_dark" android:textColor="@android:color/white" /> </LinearLayout> </RelativeLayout>
Selanjutnya kita kita buka UpdateActivity.java dimana kita akan mulai memanfaatkan class Helper yang telah kita buat tadi dengan nama DatabaseHelper pertama-tama activity ini akan menampilkan data yang akan di update terlebih dahulu. Lalu jika kita simpan proses simpan maka data akan ter Update
package com.example.sqlite; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class UpdateActivity extends AppCompatActivity { EditText etNama, etAlamat; Button btnSimpan; PesertaModel model; DatabaseHelper dbhelp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update); etNama = (EditText)findViewById(R.id.etNama); etAlamat = (EditText)findViewById(R.id.etAlamat); btnSimpan = (Button)findViewById(R.id.btnSimpan); dbhelp = new DatabaseHelper(this); Bundle bundle = getIntent().getExtras(); if(bundle!=null){ model = dbhelp.getData(bundle.getInt("ID")); etNama.setText(model.getNama()); etAlamat.setText(model.getAlamat()); } btnSimpan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dbhelp.updateData(model.getId(), etNama.getText().toString(), etAlamat.getText().toString()); finish(); } }); } }
Beres nih proses Update, tp proses update ini gakan terpanggil jika kita tidah memperlihatkan data existing nya ya kan? nah kita buat lagi satu buah Activity yang akan kita gunakan untuk menampilkan list-list data yang ada pada database kita. Kuy kita buat lagi satu buah activity dengan nama ListActivity caranya ada ya di atas.
Pada ListActivity ini kita akan menggunakan RecyclerView, ada yang bingung dengan RecyclerView? coba ikutin dulu Tutorial RecyclerView ini. Nah mari kita lanjutkan dengan membuat satu buah file layout dengan nama list_row.xml dengan isi seperti di bawah ini
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:layout_marginLeft="5dp"> <TextView android:id="@+id/txtNama" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:text="NAMA SAYA NAMA" android:textStyle="bold"/> <TextView android:id="@+id/txtAlamat" android:text="ALAMAT SAYA" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="4" android:orientation="horizontal" android:padding="2dp"> <ImageButton android:id="@+id/btnUpdate" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:src="@drawable/ic_pencil" android:tint="@android:color/white" android:scaleType="fitCenter" android:padding="2dp" android:background="@android:color/holo_orange_dark" /> <ImageButton android:id="@+id/btnDelete" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:src="@drawable/ic_delete" android:tint="@android:color/white" android:scaleType="fitCenter" android:padding="2dp" android:background="@android:color/holo_red_dark" /> </LinearLayout> </LinearLayout> <View android:layout_marginTop="5dp" android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/black"/> </LinearLayout>
Kita lanjutkan dan kembali ke activity_list.xml dan tambahkan widget RecyclerView, loh kok ga ada suggestion untuk RecyclerView atau cannot resolve? nah jika terjadi seperti itu kamu harus menambahkan dependencies support:design kalau bingung buka Tutorial RecyclerView ini
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.sqlite.ListActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recylerList" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout>
Setelah itu kita buat dulu nih class Adapter karena kita akan menggunakan RecyclerView untuk mengantisipasi kan namanya juga takut-takut data yang kita simpan itu banyak. Kita buat dengan nama ListAdapter (saya akan sisipkan pada ListActivity, tp jika ingin membuat file baru untuk menyimpan class ini silahkan karena sama saja)
Nah karena saya menyisipkan langsung class ListAdapter pada ListActivity maka isi coding lengkap dari ListActivity.java menjadi
package com.example.sqlite; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class ListActivity extends AppCompatActivity { RecyclerView recyclerView; RecyclerView.Adapter adapter; List<PesertaModel> list = new ArrayList<>(); DatabaseHelper dbhelp; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); dbhelp = new DatabaseHelper(this); recyclerView = (RecyclerView)findViewById(R.id.recylerList); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setItemAnimator(new DefaultItemAnimator()); } @Override protected void onResume() { super.onResume(); list = dbhelp.getAll(); adapter = new ListAdapter(this, list); recyclerView.setAdapter(adapter); } public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ListHolder>{ Context context; List<PesertaModel> list; public ListAdapter(Context context, List<PesertaModel> list) { this.context = context; this.list = list; } @Override public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_row, parent, false); return new ListHolder(v); } @Override public void onBindViewHolder(ListHolder holder, int position) { final PesertaModel model = list.get(position); holder.nama.setText(model.getNama()); holder.alamat.setText(model.getAlamat()); holder.update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(ListActivity.this, UpdateActivity.class); intent.putExtra("ID", model.getId()); startActivity(intent); } }); holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("Yakin Menghapus Data?"); builder.setPositiveButton("Ya", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dbhelp.deleteData(model.getId()); dialogInterface.dismiss(); notifyDataSetChanged(); } }); builder.setNegativeButton("Tidak", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }); builder.show(); } }); } @Override public int getItemCount() { return list.size(); } public class ListHolder extends RecyclerView.ViewHolder{ TextView nama, alamat; ImageButton update, delete; public ListHolder(View itemView) { super(itemView); nama = (TextView)itemView.findViewById(R.id.txtNama); alamat = (TextView)itemView.findViewById(R.id.txtAlamat); update = (ImageButton)itemView.findViewById(R.id.btnUpdate); delete = (ImageButton)itemView.findViewById(R.id.btnDelete); } } } }
Nah proses menampilkan list data, update, serta delete telah selesai. sekarang baru kita balik lagi ke Activity yang kita buat pertama kali nih dan udah itu beres deh Project CRUD menggnakan Sqlite yang telah kita buat.
Langsung aja kita buka InsertActivity.java dan kita tambahkan fungsi insertnya ya
package com.example.sqlite; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class InsertActivity extends AppCompatActivity { EditText etNama, etAlamat; Button btnSimpan, btnView; DatabaseHelper dbhelp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_insert); etNama = (EditText)findViewById(R.id.etNama); etAlamat = (EditText)findViewById(R.id.etAlamat); btnSimpan = (Button)findViewById(R.id.btnSimpan); btnView = (Button)findViewById(R.id.btnViewdata); btnSimpan.setOnClickListener(listener); btnView.setOnClickListener(listener); dbhelp = new DatabaseHelper(this); } View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()){ case R.id.btnSimpan: dbhelp.insertData(etNama.getText().toString(), etAlamat.getText().toString()); Toast.makeText(getApplicationContext(), "Data Tersimpan", Toast.LENGTH_SHORT).show(); etNama.getText().clear(); etAlamat.getText().clear(); break; case R.id.btnViewdata: startActivity(new Intent(InsertActivity.this, ListActivity.class)); break; } } }; }
Beres nih project CRUD database Sqlite yang kita buat, dan sudah bisa dijalankan. Untuk source code lengkapnya Download disini
main_activitynya kemana ya
BalasHapusHalo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusHalo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur
BalasHapus