PENGENALAN SQLITE PADA ANDROID STUDIO
Ada beberapa cara Android dalam menyimpan data aplikasi, seperti Shared Preferences, File, SQLite dan lainnya.
SQLite itu jenis database yang ringan dan tersedia dalam OS Android. Ada beberapa jenis database lainnya yang juga sering digunakan oleh para developer seperti salah satu contohnya ialah Realm.
Berikut adalah pelaksanaan praktikum menggunakan SQLite pada android studio
- Akan muncul tampilan seperti dibawah ini. Kita hanya perlu memberi nama project pada “Name” dan pilih lokasi penyimpanan project-nya akan disimpan difolder mana pada bagian “Save location”, selebihnya cukup biarkan saja. Untuk name kita bernama "Notes with SQLite". Jika sudah, klik “Finish”.
- Setelah itu ubah dan ketikan script pada activity_main.xml seperti dibawah ini :
<?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>
- Buatlah file pada folder Layout dengan nama row.xml dan ubahlah script'nya, seperti dibawah ini :
<?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>
- Buatlah folder baru pada folder res dengan cara klik kanan pada folder res - new - Directory - lalu beri nama folder MENU.
- Jika sudah membuat folder MENU, selanjutnya kita buat layout baru pada folder MENU dengan nama menu.xml, dan ubah script'nya :
<?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 buat class SQLiteOpenHelper dengan nama file DbHelper.java
- SqliteOpenHelper adalah sebuah subclass , yang digunakan untuk menentukan nama database dan versi database yang sedang dipakai. Kita bisa menerapkan method di clas ini seperti : OnCreate (SqliteDatabase) ,OnUpgrade (SqliteDatabase int int ) dan OnOpen(SqliteDatabase).
- Ubah dan ketikkan script dibawah ini pada class DbHelper.java :
package dewiratnawati246.blogspot.com.noteswithsqlite;
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 kita ubah script pada MainActivity.java seperti dibawah ini :
package dewiratnawati246.blogspot.com.noteswithsqlite;
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();
final TextView taskTextView = (TextView)parent.findViewById(R.id.task_title);
Log.e("String", (String) taskTextView.getText());
AlertDialog dialog = new AlertDialog.Builder(this)
.setMessage("Apa Anda Yakin Ingin Menghapus ?")
.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();
}
}
dbHelper.deleteTask(task);
loadTaskList();
}
})
.setNegativeButton("No", null)
.show();
}
}
- Lalu udah script pada string.xml seperti yg ada dibawah ini :
<resources>
<string name="app_name">Notes with SQLite</string>
</resources>
- Lalu jalankankan, maka akan muncul tampilan seperti dibawah ini :
Sekian pelaksanaan praktikum pengenalan SQLite pada android studio dan terima kasih sudah melihat blog ini🙂
Komentar
Posting Komentar