Modul 12 - Pengenalan SQLite Pada Android Studio
- 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.

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.

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