top of page
Search

Modul 12 - Pengenalan SQLite Pada Android Studio

  • Writer: Reza Prihandi
    Reza Prihandi
  • Jul 1, 2021
  • 3 min read

Apa itu SQLite?


SQLite merupakan sebuah sistem manajemen basisdata relasional 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.


Tidak seperti pada paradigma client-server umumnya, Inti SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Mekanisme seperti ini tentunya membawa keuntungan karena dapat mereduksi overhead, latency times, dan secara keseluruhan lebih sederhana.

LATIHAN !

Membuat Apps todo list menggunakan SQLite.


Pertama jalankan aplikasi IDE Android Studio lalu buat new project dan pilih empty activity kemudian ketikkan kode berikut ini pada activity_main :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:padding="20dp"
 android:background="#f5f5dc"
 tools:context=".MainActivity">
 <ListView
 android:id="@+id/lstTask"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
</RelativeLayout>

Buat sebuah file Layout dengan nama row.xml file ini nantinya digunakan untuk menampilkan list kegiatan yang akan dilakukan dan disampingnya akan kita berikan tombol hapus.

ree

Lalu ketikan kode program berikut ini untuk isi file row.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:padding="20dp"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#f5f5dc">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/task_title"
 android:text="Example"
 android:textSize="20sp"
 android:layout_alignParentStart="true"
 android:layout_alignParentLeft="true"/>
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/btnDelete"
 android:text="HAPUS"
 android:layout_alignParentRight="true"
 android:layout_alignParentEnd="true"
 android:onClick="deleteTask"/>
</RelativeLayout>

Setelah itu kita akan membuat Menu, caranya Klik kanan pada folder res > New > Directory lalu Beri nama menu lalu buat layout dengan nama yang sama.


Ingat, nama foldernya harus diawali dengan huruf kecil. Android Studio tidak mengenali nama file/direktori dengan huruf kapital diawal.


ree

Dan ketikkan kode berikut ini :


<?xml version="1.0" encoding="utf-8"?>
<menu
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">
 <item
 android:id="@+id/action_add_task"
 android:icon="@android:drawable/ic_menu_add"
 android:title="Tambah Tugas "
 app:showAsAction="always" />
</menu>

Selanjutnya kita akan membuat class SQLiteOpenHelper dengan nama file DbHelper.java dengan cara klik kanan pada direktori / folder nama projek kalian seperti "com.example.tugas12" lalu pilih new java class dan beri nama DbHelper. Lalu ketikkan kode berikut ini :


package com.example.tugas12; //jangan di copas, ini nama paket saya

//copy mulai dari bawah sini
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

public class DbHelper extends SQLiteOpenHelper {
    private static final String DB_NAME="EDMTDev";
    private static final int DB_VER = 1;
    public static final String DB_TABLE="Task";
    public static final String DB_COLUMN = "TaskName";
    public DbHelper(Context context) {
        super(context, DB_NAME, null, DB_VER);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = String.format("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT,%s TEXT NOT NULL);",
                DB_TABLE,DB_COLUMN);
        db.execSQL(query);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String query = String.format("DELETE TABLE IF EXISTS %s",DB_TABLE);
        db.execSQL(query);
        onCreate(db);
    }
    public void insertNewTask(String task){ SQLiteDatabase db= this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DB_COLUMN,task);
        db.insertWithOnConflict(DB_TABLE,null,values,SQLiteDatabase.CONFLICT_REPLACE);
        db.close(); } public void deleteTask(String task){ SQLiteDatabase db = this.getWritableDatabase();
        db.delete(DB_TABLE,DB_COLUMN + " = ?",new String[]{task});
        db.close(); } public ArrayList<String> getTaskList(){ ArrayList<String> taskList = new ArrayList<>();
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(DB_TABLE,new String[]{
                DB_COLUMN},null,null,null,null,null);
        while(cursor.moveToNext()){
            int index = cursor.getColumnIndex(DB_COLUMN);
            taskList.add(cursor.getString(index));
        }
        cursor.close();
        db.close();
        return taskList;
    }
}

Selanjutnya Pada MainActivty.java masukan kode-kode berikut ini.


package com.example.tugas12;

import android.content.DialogInterface;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    DbHelper dbHelper;
    ArrayAdapter<String> mAdapter;
    ListView lstTask;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new DbHelper(this);
        lstTask = (ListView)findViewById(R.id.lstTask);
        loadTaskList();
    }
    private void loadTaskList() {
        ArrayList<String> taskList = dbHelper.getTaskList();
        if(mAdapter==null){
            mAdapter = new ArrayAdapter<String>(this,R.layout.row,R.id.task_title,taskList);
            lstTask.setAdapter(mAdapter);
        } else{ mAdapter.clear();
            mAdapter.addAll(taskList);
            mAdapter.notifyDataSetChanged();
        }
    }
    @Override public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);
//Change menu icon color
        Drawable icon = menu.getItem(0).getIcon();
        icon.mutate();
        icon.setColorFilter(getResources().getColor(android.R.color.white), PorterDuff.Mode.SRC_IN);
        return super.onCreateOptionsMenu(menu);
    }
    @Override public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_add_task: final EditText taskEditText = new EditText(this);
                AlertDialog dialog = new AlertDialog.Builder(this)
                        .setTitle("Tambah Tugas")
                        .setMessage("Apa yang kamu ingin lakukan hari ini ?")
                        .setView(taskEditText)
                        .setPositiveButton("Tambah", new DialogInterface.OnClickListener() {
                                    @Override public void onClick(DialogInterface dialog, int which) {
                                        String task = String.valueOf(taskEditText.getText());
                                        dbHelper.insertNewTask(task);
                                        loadTaskList();
                                    }
                                }
                        )
                        .setNegativeButton("Batal",null)
                        .create();
                dialog.show();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
    public void deleteTask(View view){
        View parent = (View)view.getParent();
        TextView taskTextView = (TextView)parent.findViewById(R.id.task_title);
        Log.e("String", (String) taskTextView.getText());
        AlertDialog dialog = new AlertDialog.Builder(this)
                .setMessage("Apa kalian ingin Hapus ini?")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        String task = String.valueOf(taskTextView.getText());
                        dbHelper.deleteTask(task);
                        loadTaskList();
                    }
                })
                .setNegativeButton("No", null)
                .show();
    }
}

Maka hasilnya akan seperti ini :


 
 
 

Commentaires


©2021 by MyBlog. Proudly created with Wix.com

bottom of page