SQLite
Materi SQLite
A. Tujuan
Agar Anda dapat lebih memahami topik SQLite beserta CRUD nya
B. Membuat Proyek Baru
Nama Project MyStudents
Target & Minimum Target SDK Phone and Tablet, API level
21
Tipe Activity Empty Activity
Activity Name MainActivity
Use AndroidX artifacts True
Language Java
C. Kode
Langkah pertama adalah buat package baru dengan nama model,
kemudian buat class di Java dengan nama Student.java seperti code
berikut:
Student.java
public class Student implements Serializable {
private int id;
private String name, nim;
Setelah itu, kita akan buat setter getter. Bisa kita lakukan dengan
Alt+Insert atau Klik Kanan Generate→ Getter and Setter pada editor
didalam model data CoffeeDrink.java.
Pada class Student diatas kita perlu implement ke Serializable supaya nantinya
saat proses edit data, object student tersebut dapat dikirimkan melalui intent ke
activity UpdateActivity
asdfghjk
Selanjutnya buat package baru kembali dengan nama db dan buat class baru
dengan nama DbHelper.java, berikut codenya:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_STUDENTS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
activity_main.xml
cc
<Button
android:id="@+id/btn_list"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Daftar Students" />
</LinearLayout>
MainActivity.java
DbHelper dbHelper;
private EditText etName, etNim;
private Button btnSave, btnList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = findViewById(R.id.edt_name);
etNim = findViewById(R.id.edt_nim);
btnSave = findViewById(R.id.btn_submit);
btnList = findViewById(R.id.btn_list);
btnSave.setOnClickListener(v -> {
if (etNim.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "Error: Nim
harus diisi!", Toast.LENGTH_SHORT).show();
} else if (etName.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "Error: Nama
harus diisi!", Toast.LENGTH_SHORT).show();
} else {
dbHelper.addUserDetail(etNim.getText().toString(),
etName.getText().toString());
etName.setText("");
btnList.setOnClickListener(v -> {
Intent intent = new Intent(MainActivity.this,
ListStudentsActivity.class);
startActivity(intent);
});
}
}
Pada code diatas sebelum proses insert ke database kita lakukan terlebih dahulu
validasi untuk pengisian EditText nim dan nama, dimana tidak boleh kosong.
Selanjutnya, jika validasi terpenuhi maka proses insert akan dilakukan dengan
menggunakan object dari class DBHelper pada method addUserDetail( ).
Sampai proses ini kita sudah bisa melakukan proses input data ke database,
silahkan bisa anda ujicoba run aplikasi tersebut
Untuk melengkapi adapter tersebut, kita buat terlebih dahulu layout untuk
menampilkan data Student di file item_student.xml dan
activity_list_student.xml dengan code berikut:
item_student.xml
<androidx.cardview.widget.CardView
android:id="@+id/cv_item_student"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
app:cardMaxElevation="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/tv_item_nim"
android:layout_width="match_parent"
<TextView
android:id="@+id/tv_item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:text="Arif Dwi Laksito"
android:textSize="14sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/btn_edit"
android:layout_width="wrap_content"
android:layout_height="38dp"
android:layout_weight="1"
android:text="Edit" />
<Button
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="38dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:text="Delete" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
activity_list_student.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@NonNull
@Override
public StudentViewHolder onCreateViewHolder(@NonNull ViewGroup
parent, int viewType) {
View view =
LayoutInflater.from(parent.getContext()).inflate(R.layout.item_st
udent, parent, false);
return new StudentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull StudentViewHolder
holder, int position) {
holder.tvNim.setText(listStudents.get(position).getNim());
holder.btnDelete.setOnClickListener((View v) -> {
AlertDialog.Builder builder = new
AlertDialog.Builder(activity);
builder.setTitle("Konfirmasi hapus");
builder.setMessage("Apakah yakin akan dihapus?");
dbHelper.deleteUser(listStudents.get(position).getId());
Toast.makeText(activity, "Hapus berhasil!",
Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(activity,
ListStudentsActivity.class);
activity.startActivity(myIntent);
activity.finish();
});
});
}
@Override
public int getItemCount() {
return listStudents.size();
}
ListStudentActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_students);
@Override
protected void onResume() {
super.onResume();
studentsArrayList = dbHelper.getAllUsers();
adapter.setListStudents(studentsArrayList);
adapter.notifyDataSetChanged();
}
}
Sedangkan proses edit data belum bisa dilakukan, saat kita tekan tombol edit
maka tidak akan terjadi action apapun. Untuk melengkai fitur edit, kita buat
activity baru dengan nama UpdateActivity.java. Berikut ini code untuk
UpdateActivity dan layout nya yaitu activity_update.xml
UpdateActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
etName = findViewById(R.id.edt_name);
etNim = findViewById(R.id.edt_nim);
btnSave = findViewById(R.id.btn_submit);
etName.setText(student.getName());
etNim.setText(student.getNim());
}
}
activity_update.xml
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp">
<EditText
android:id="@+id/edt_nim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="NIM"
android:inputType="textCapSentences"
android:maxLines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp">
<EditText
android:id="@+id/edt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nama lengkap"
android:inputType="textCapSentences"
android:maxLines="1" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btn_submit"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update" />
</LinearLayout>
Tugas
Tugas
1. Mengerjakan tugas dengan mempraktikan apa yang telah didemokan
di kelas terkait SQLite, dikumpulkan kedalam folder google drive yang
Bernama “tugas 2”dengan ketentuan
a. Format Nama “Kelas-Absen-Nama-Tugas 2 SQLite”
b. Berbentuk Rar/Zip yang berisikan
● Rar/Zip Project
● APK Project
https://drive.google.com/drive/folders/1fSN8jmCbo5j9yps87t79EqTXO
ewoGCGq?usp=sharing