[Tutorial] Membuat Aplikasi Dengan Menggunakan CRUD SQLite


Membuat Aplikasi Dengan Menggunakan CRUD SQLite

Assalamualaikum Guys... Kembali lagi bersama gw Ramadhany si programer ganteng.... nah guys... Sekarang ane mau berbagi ilmu tentang membuat aplikasi dengan menggunakan CRUD SQLite.... Ayo ikuti langkah-langkahnya....

A. Pengertian SQLite

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 efiesien. Untuk 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.

Berikut adalah langkah-langkah untuk pembuatan aplikasi sqlite database  :

B. Pembuatan Project

Terlebih dahulu buatlah sebuah project pada android studio misalnya dengan nama Database SQLite 

Pilih Next, kemudian muncul pilihan minimum sdk target pembuatan aplikasi. Setelah itu Next 


Pilih Next, kemudian muncul pilihan seperti di bawah ini :


Pada Add an Activity to Mobile, pilih Basic Activity. Setelah itu pilih Next.


Pada Costumize the Activity, pilih Finish. Tunggu beberapa saat hingga proses pembuatan proect tersebut selesai.

B. Design Layout

Setelah proses pembuatan project selesai. Langkah selanjutnya adalah pembuatan layout pada file content_main.xml. Tambahkan satu buah List View 


Tampilan widget pada layout content_main.xml

Tampilan design layout content_main.xml


Kode text pada layout content_main.xml :

<?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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="com.example.rara.crudsqlite.MainActivity"    tools:showIn="@layout/activity_main">

<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/LvBarang" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:padding="16dp" />
</RelativeLayout>


C. Logika Kode

Pertama kita lihat di class MainActivity.java. kita akan kenalkan widget ListView, inisialiasi kontroller dan inisialisasi array listnya. Tambahkan code seperti di bawah ini

1. MainActivity.java

public class MainActivity extends AppCompatActivity {
//inisialisasi kontroller private DBFunction dbFunction;
//inisialisasi arraylist private ArrayList<MBarang> data;
ListView lvBarang;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) 
        findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
startActivity(new Intent(getApplicationContext(),
AddBarang.class));
}
});
lvBarang = (ListView)findViewById(R.id.LvBarang) ;
dbFunction = new DBFunction(this);
// buka kontroller dbFunction.open();

// ambil semua data barang data = dbFunction.getAllBarang();

// masukkan data barang ke array adapter ArrayAdapter<MBarang> adapter = new ArrayAdapter<MBarang>(this,
android.R.layout.simple_list_item_1, data);
lvBarang.setAdapter(adapter);
// event ketika item list view di click lvBarang.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, 
        View view, int position, long id) {
MBarang b = data.get(position);
Intent a = new Intent(getApplicationContext(), 
        EditDeleteActivity.class);
a.putExtra("nama_barang", b.getNama_barang());
a.putExtra("jumlah_barang", b.getJumlah_barang());
a.putExtra("harga_barang", b.getHarga_barang());
a.putExtra("id_barang", b.getId_barang());
startActivity(a);
}
});
}

@Override public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if 
           it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();

//noinspection SimplifiableIfStatement if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
@Override protected void onResume() {
dbFunction.open();
super.onResume();
}

@Override protected void onPause() {
dbFunction.close();
super.onPause();
}
}


Setelah itu kita membuat class java, beri nama kelasnya yaitu MSiswa. Dan ini kode class MBarang.java

2. MBarang.java

public class MBarang {
private long id_barang;
private String nama_barang, jumlah_barang, harga_barang;

@Override public String toString() {
return "Barang : "+nama_barang+"\nJumlah : "+jumlah_barang+"
        \nHarga : "+harga_barang;
}

public long getId_barang() {
return id_barang;
}

public void setId_barang(long id_barang) {
this.id_barang = id_barang;
}

public String getNama_barang() {
return nama_barang;
}

public void setNama_barang(String nama_barang) {
this.nama_barang = nama_barang;
}

public String getJumlah_barang() {
return jumlah_barang;
}

public void setJumlah_barang(String jumlah_barang) {
this.jumlah_barang = jumlah_barang;
}

public String getHarga_barang() {
return harga_barang;
}

public void setHarga_barang(String harga_barang) {
this.harga_barang = harga_barang;
}
}

Setelah itu muat class java lagi yaitu DBHelper. Fungsi dari class DBHelper ini adalah 
konfogurasi nama database table dan filter databasenya. Contoh kode lengkap dari class 
DBHelper.

3. DBHelper.java

public class DBHelper extends SQLiteOpenHelper {
//deklarasi table, kolom dan nama database yang akan kita gunakan. //nama tabel public static String TABLE_NAME="tb_barang";
//nama database public static String DB_NAME="inventori.db";
//kolum public static final String FIELDS_NAMA="nama_barang";
public static final String FIELDS_ID="id_barang";
public static final String FIELDS_JUMLAH="jumlah_barang";
public static final String FIELDS_HARGA="harga_barang";
public static final int db_version=1;

//buat perinntah untuk create table tb_barang private static String tb_create= "create table "+TABLE_NAME+"(" +FIELDS_ID+" integer primary key autoincrement, "+
FIELDS_NAMA+" varchar(50) not null, " +
FIELDS_JUMLAH+" varchar(50) not null, " +FIELDS_HARGA+ " varchar(50) not null);";


//create table tb_barang (id_barang integer primary key 
      autoincrement, nama_barang varchar(50) not null dst)    public DBHelper(Context context) {
super(context, DB_NAME, null, db_version);
}

//mengeksekusi perintah sql yang sudah kita buat @Override public void onCreate(SQLiteDatabase db) {
db.execSQL(tb_create);
}

//upgrade database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
//class java yang berfungsi untuk setting database yang 
      Ekstend ke SQLiteOpenHeler
}


Kemudian buatlah class java baru lagi yaitu DBFunction.java. Fungsi dari class ini adalah class untuk menampung fungsi rumus database. Dibawah ini adalah code lengkap class DBFunction.java

4. DBFunction.java

public class DBFunction {
private SQLiteDatabase database;
private DBHelper dbHelper;
//mengenalkan semua kolom yang ada pda table barang private String[] kolom={
DBHelper.FIELDS_ID, DBHelper.FIELDS_NAMA, DBHelper.FIELDS_JUMLAH,
DBHelper.FIELDS_HARGA };

//buat constructor dari DBFunction public DBFunction(Context context) {
dbHelper = new DBHelper(context);
}
//buka koneksei ke sqlite public void open() throws SQLiteException{
database = dbHelper.getWritableDatabase();
}
//tuyup koneksi ke database sqlite public void close(){
dbHelper.close();

}

//funvtion / methode untk tambah barang public MBarang addBarang(String nama_barang, String jumlah_barang, 
           String harga_barang){
ContentValues values = new ContentValues();
values.put(DBHelper.FIELDS_NAMA, nama_barang);
values.put(DBHelper.FIELDS_HARGA, harga_barang);
values.put(DBHelper.FIELDS_JUMLAH, jumlah_barang);

long id = database.insert(DBHelper.TABLE_NAME, null, values);
Cursor cursor = database.query(DBHelper.TABLE_NAME
        kolom, DBHelper.FIELDS_ID+
"=" + id, null,null, null,null);
cursor.moveToFirst();
MBarang barang = cursorToBarang(cursor);
cursor.close();
return barang;
}

private MBarang cursorToBarang(Cursor cursor) {
MBarang barang = new MBarang();
barang.setId_barang(cursor.getLong(0));
barang.setNama_barang(cursor.getString(1));
barang.setHarga_barang(cursor.getString(2));
barang.setJumlah_barang(cursor.getString(3));
return barang;
}

//function untuk mengambil semua data barang public ArrayList<MBarang> getAllBarang(){
ArrayList<MBarang> barang = new ArrayList<>();

//query untuk menampilkan semua data barang Cursor cursor = database.query(DBHelper.TABLE_NAME
        kolom, null,null,null,null,null);
//kita pindahkan data ke data yang paling pertama cursor.moveToFirst();

//daftar barang while (!cursor.isAfterLast()){
MBarang modelBarang = cursorToBarang(cursor);
barang.add(modelBarang);
cursor.moveToNext();
}

cursor.close();
return barang;
}

//function untuk menampilka data barang sesuai dengan ID public MBarang getBarangByID(long id){
//kenalkan data barang MBarang barang = new MBarang();
Cursor cursor = database.query(DBHelper.TABLE_NAME, kolom,
"id_barang ="+ id, null,null,null,null);
cursor.moveToFirst();
barang = cursorToBarang(cursor);
cursor.close();
return barang;
}
//function untuk update barang public void updateBarang(MBarang b){
//ambil berdasarkan id String filter = "id_barang="+ b.getId_barang();
ContentValues values = new ContentValues();
//masukan data sesuuai dengan kolom values.put(DBHelper.FIELDS_NAMA, b.getNama_barang());
values.put(DBHelper.FIELDS_JUMLAH, b.getJumlah_barang());
values.put(DBHelper.FIELDS_HARGA, b.getHarga_barang());
//update query database.update(DBHelper.TABLE_NAME, values, filter,null);
}

//function delete barang public void deleteBarang(long id){
String filter = "id_barang="+id;
database.delete(DBHelper.TABLE_NAME, filter, null);
}
}


Setelah itu buatlah activity baru untuk menambah data barang tersebut. Beri nama activity tersebut dengan AddBarang.java. Fungsi dari class ini adalah untuk menambahkan data barang yang ingin di tambah nanti

5.AddBarang.java

public class AddBarang extends AppCompatActivity {

EditText EdNama, EdHarga, EdJumlah;
Button BtnCheck, BtnReset;

DBFunction dbFunction;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_barang);
kenalin();
dbFunction = new DBFunction(this);
try{
dbFunction.open();
}catch (SQLiteException e){

}
BtnReset.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
EdNama.setText("");
EdHarga.setText("");
EdJumlah.setText("");
}
});
BtnCheck.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
String barang, jumlah, harga;
barang = EdNama.getText().toString();
jumlah = EdJumlah.getText().toString();
harga = EdHarga.getText().toString();

if (TextUtils.isEmpty(barang)){
EdNama.setError("Nama barang tidak boleh kosong!!");
EdNama.requestFocus();
}else if (TextUtils.isEmpty(harga)){
EdJumlah.setError("Jumlah barang tidak boleh kosong!!");
EdJumlah.requestFocus();
}else if (TextUtils.isEmpty(jumlah)){
EdHarga.setError("Harga barang tidak boleh kosong!!");
EdHarga.requestFocus();
}else{
MBarang barang1 = dbFunction.addBarang
                                      (barang, harga,jumlah);
                    Toast.makeText(getApplicationContext(),
"Berhasil Di Tambah",Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(), 
                    MainActivity.class));
finish();
}
}
});
}

private void kenalin() {
EdNama = (EditText)findViewById(R.id.EdNama);
EdJumlah = (EditText)findViewById(R.id.EdJumlah);
EdHarga = (EditText)findViewById(R.id.EdHarga);
BtnCheck = (Button)findViewById(R.id.BtnCheck);
BtnReset = (Button)findViewById(R.id.BtnReset);
}
}


Dan jangan lupa juga, di layout activity_add_barang.xml tambahkan 3 buah EdiText dengan id = EdNama, EdJumlah, EdHarga 2 buah Button dengan id = BtnCheck, BtnReset. Berikut adalah code lengkap pada layout activity_add_barang.xml 

<EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/EdNama"    android:hint="Masukan Nama Barang"    android:layout_alignParentTop="true"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_marginTop="50dp" />

<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/EdJumlah" android:hint="Masukan Jumlah Barang" android:layout_below="@+id/EdNama" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="10dp" />

<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/EdHarga" android:hint="Masukan Jumlah Harga" android:layout_below="@+id/EdJumlah" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="10dp" />
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_below="@+id/EdHarga" android:layout_alignParentLeft="true" android:layout_alignParentStart="true">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/BtnCheck" android:text="Check" android:background="#2941fa" android:layout_margin="10dp" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Reset" android:id="@+id/BtnReset" android:background="#2941fa" android:layout_margin="10dp" />
</LinearLayout>


Selanjutnya tambahkan 1 buah class baru, beri nama class tersebut adalah EditDeleteActivity.java, fungsi class ini adalah untuk mendelet dan mengedit data yang sudah di tambahkan di dalam list view tersebut. Class ini nantinya akan di jadikan sebuah activity. Dan kita akan memakai layout activity_add_barang.xml. Berikut contoh code dari EditDelete.java

6. EditDelete.Java

public class EditDeleteActivity extends AppCompatActivity {
EditText EdNama, EdHarga, EdJumlah;
Button BtnCheck, BtnReset;
DBFunction dbFunction;
String nmBarang, jmBarang, hrgBarang;
long idBarang;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_barang);
setEta();
dbFunction = new DBFunction(this);
try {
dbFunction.open();
// jika di php ini seperti include koneksi ke database }catch (SQLiteException e){

}
// event ketika di edit BtnCheck.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
String nama,harga,jumlah;
nama = EdNama.getText().toString();
harga = EdHarga.getText().toString();
jumlah = EdJumlah.getText().toString();

// cek data yang kosong dan jika kosong tampilkan pesan error if (TextUtils.isEmpty(nama)){
EdNama.setError("Nama Barang Tidak Boleh Kosong!!!");
// kusor EdNama.requestFocus();
}else if (TextUtils.isEmpty(jumlah)) {
EdJumlah.setError("Jumlah Barang Tidak Boleh Kosong!!!");
// kusor EdJumlah.requestFocus();
}else if (TextUtils.isEmpty(harga)) {
EdHarga.setError("Harga Barang Tidak Boleh Kosong!!!");
// kusor EdHarga.requestFocus();
}else {
// b = parameter MBarang b = new MBarang();
b.setId_barang(idBarang);
b.setNama_barang(nama);
b.setJumlah_barang(jumlah);
b.setHarga_barang(harga);
startActivity(new Intent(getApplicationContext(),
                    MainActivity.class));
finish();
}
}
});
BtnReset.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
dbFunction.deleteBarang(idBarang);
Toast.makeText(getApplicationContext(), 
                EdNama.getText().toString()+ "" + " Berhasil Di Hapus!!",
Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(), 
                MainActivity.class));
finish();
}
});

}

private void setEta() {
EdNama = (EditText)findViewById(R.id.EdNama);
EdJumlah = (EditText)findViewById(R.id.EdJumlah);
EdHarga = (EditText)findViewById(R.id.EdHarga);
BtnCheck = (Button)findViewById(R.id.BtnCheck);
BtnReset = (Button)findViewById(R.id.BtnReset);

BtnCheck.setText("Simpan");
BtnReset.setText("Hapus");

// cara mengambil nilai put extra dari mainActivity nmBarang = getIntent().getStringExtra("nama_barang");
jmBarang = getIntent().getStringExtra("jumlah_barang");
hrgBarang = getIntent().getStringExtra("harga_barang");
idBarang = getIntent().getLongExtra("id_barang", 0);

//set data tampilkan pada edittext EdNama.setText(nmBarang);
EdJumlah.setText(jmBarang);
EdHarga.setText(hrgBarang);
}
}

Jangan lupa !! kenalkan class EditDelete.java yang sudah di jadikan activity di AndroidManifest

<activity android:name=".EditDeleteActivity"></activity>

D. Menjalankan Aplikasi


Setelah selesai semuanya, langkah terakhir adalah menjalankan aplikasi tersebut yaitu dengan contoh di bawah ini


a. Tampilan Menu Utama

b. Tampilan Layout Tambah Data


c. Tampilan Data Yang Sudah Di Tambah


d. Tampilan Layout Untuk Hapus Data


e. Tampilan Data Yang Sudah Di Hapus



Sekian Ilmu Yang Saya Bagi Kepada Anda Semoga Mermanfaat Bagi Kita Semua. Jangan Lupa Beri Komentar Atau Masukan Ulasan Anda Untuk Blog Saya.. Terima Kasih  👌👌👍👍

Wassalamualaikum Warahmatulahhi Wabarakatuh