Membuat CRUD Menggunakan SQLite di
Android
Pada pembahasan kali ini kita
akan membahas mengenai cara membuat crud menggunakan SQLite di Android. CRUD
merupakan system dasar untuk membuat aplikasi baik itu dibagian Web, Desktop,
maupun Mobile. Untuk pembahasan kali ini kita membuat crud di bagian mobile.
Untuk membuat CRUD, terlebih dahulu kita membuat database nya agar seluruh data
yang kita olah dapat tersimpan dan juga dapat diolah kembali dimasa mendatang.
Disini Database yang saya gunakan adalah SQL Lite Databse.
A. Membuat Database Di SQL Lite

Dengan struktur tabel seperti
dibawah :
B. Mengimplementasikan Kode
Program
1. Disini kita
akan membuat file class activity yang bernama DataHelper.java.
di class activity ini kita akan menerapkan method atau fungsi dari
SqliteOpenHelper seperti : OnCreate(). Dimana fungsi ini akan menjalankan
database, jika sebelumnya database belom ada atau belum tersedia.
di class activity ini kita akan menerapkan method atau fungsi dari
SqliteOpenHelper seperti : OnCreate(). Dimana fungsi ini akan menjalankan
database, jika sebelumnya database belom ada atau belum tersedia.
Script /koding untuk DataHelper :
package
com.example.sonyvaio.crud_sql_lite_133;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = " Biodata.db";
private static final int DATABASE_VERSION = 1;
protected static final String TABLE_NAME = "biodata";
public DataHelper(Context context) {
super(context,DATABASE_NAME, null, Integer.parseInt(TABLE_NAME));
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table biodata(no integer primary key, nama text null, tgl text null, jk text null, alamat text null);";
Log.d("Data", "onCreate: " + sql);
db.execSQL(sql);
sql = "INSERT INTO biodata (no, nama, tgl, jk, alamat) VALUES ('5160311133', 'Aulia Bayu M', '04-08-2018', 'Pria','Depok,Sleman');";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME +"";
db.execSQL(sql);
db.execSQL(sql);
}
}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = " Biodata.db";
private static final int DATABASE_VERSION = 1;
protected static final String TABLE_NAME = "biodata";
public DataHelper(Context context) {
super(context,DATABASE_NAME, null, Integer.parseInt(TABLE_NAME));
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table biodata(no integer primary key, nama text null, tgl text null, jk text null, alamat text null);";
Log.d("Data", "onCreate: " + sql);
db.execSQL(sql);
sql = "INSERT INTO biodata (no, nama, tgl, jk, alamat) VALUES ('5160311133', 'Aulia Bayu M', '04-08-2018', 'Pria','Depok,Sleman');";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME +"";
db.execSQL(sql);
db.execSQL(sql);
}
}
2. Setelah itu kita akan membuat sebuah Activity baru.
Kita akan membuat 3 activity di antaranya :
·
BuatBiodata.java,
·
LihatBiodata,
·
UpdateBiodata
·
Main_Activity
Untuk layoutnya :
·
activity_buat_biodata.xml
·
activity_lihat_biodata.xml
·
activity_update_biodata.xml
·
activity_main.xml
3. selanjutnya kita masukkan script pada MainActivity
seperti di bawah ini :
Script Main_Activity.java
:
package com.example.sonyvaio.crud_sql_lite_133; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class MainActivity extends AppCompatActivity { String[] daftar; ListView ListView01; Menu menu; protected Cursor cursor; DataHelper dbcenter; public static MainActivity ma;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.button2); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent inte = new Intent(MainActivity.this, BuatBiodata.class); startActivity(inte); } }); ma = this; dbcenter = new DataHelper(this); RefreshList(); } public void RefreshList(){ SQLiteDatabase db = dbcenter.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM biodata",null); daftar = new String[cursor.getCount()]; cursor.moveToFirst();
for (int cc=0; cc < cursor.getCount(); cc++){ cursor.moveToPosition(cc); daftar[cc] = cursor.getString(1).toString(); } ListView01 = (ListView)findViewById(R.id.listView1); ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.
simple_list_item_1,
daftar)); ListView01.setSelected(true); ListView01.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { final String selection = daftar[arg2];
final CharSequence[] dialogitem = {"Lihat Biodata", "Update Data",
"Hapus Biodata"};
AlertDialog.Builder builder =
new AlertDialog.Builder(MainActivity.this); builder.setTitle("Pilihan"); builder.setItems(dialogitem, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { switch(item){ case 0 : Intent i = new Intent(getApplicationContext(),
LihatBiodata.class); i.putExtra("nama", selection); startActivity(i); break;
case 1 : Intent in = new Intent(getApplicationContext(),
UpdateData.class); in.putExtra("nama", selection); startActivity(in); break; case 2 : SQLiteDatabase db = dbcenter.getWritableDatabase(); db.execSQL("delete from biodata where nama =
'"+selection+"'"); RefreshList(); break; } } }); builder.create().show(); }}); ((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
Script design
activity_main.xml :
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android=
"http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ecf0f1" tools:context=".MainActivity" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/button1" style="?android:attr/borderlessButtonStyle" android:text="Buat Biodata Baru" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/button2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> </ListView>
<ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:alpha="0.4" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/> </android.support.constraint.ConstraintLayout>
4. Membuat Perintah Insert
·
Perintah ini digunakan untuk menyimpan data ke database SQL Lite :
Script BuatBiodata.java
package com.example.sonyvaio.crud_sql_lite_133; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class BuatBiodata extends AppCompatActivity { protected Cursor cursor; DataHelper dbHelper; Button ton1, ton2; EditText text1, text2, text3, text4, text5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_buat_biodata); dbHelper = new DataHelper(this); text1 = (EditText) findViewById(R.id.editText1); text2 = (EditText) findViewById(R.id.editText2); text3 = (EditText) findViewById(R.id.editText3); text4 = (EditText) findViewById(R.id.editText4); text5 = (EditText) findViewById(R.id.editText5); ton1 = (Button) findViewById(R.id.button1); ton2 = (Button) findViewById(R.id.button2); ton1.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
Script activity_buat_biodata.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android
="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".BuatBiodata" > <EditText android:id="@+id/editText1" android:layout_width="198dp" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_alignLeft="@+id/textView1" android:singleLine="true" tools:layout_editor_absoluteX="186dp" tools:layout_editor_absoluteY="65dp"> <requestFocus /> </EditText> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Nomor" tools:layout_editor_absoluteX="18dp" tools:layout_editor_absoluteY="78dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_alignLeft="@+id/editText1" android:text="Nama" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="132dp" /> <EditText android:id="@+id/editText2" android:layout_width="194dp" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_alignLeft="@+id/textView2" android:singleLine="true" tools:layout_editor_absoluteX="186dp" tools:layout_editor_absoluteY="120dp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText2" android:layout_alignLeft="@+id/editText2" android:text="Tanggal Lahir" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="198dp" /> <EditText android:id="@+id/editText3" android:layout_width="196dp" android:layout_height="wrap_content" android:layout_below="@+id/textView3" android:layout_alignLeft="@+id/textView3" android:singleLine="true" tools:layout_editor_absoluteX="190dp" tools:layout_editor_absoluteY="186dp" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText3" android:layout_alignLeft="@+id/editText3" android:text="Jenis Kelamin" tools:layout_editor_absoluteX="18dp" tools:layout_editor_absoluteY="360dp" /> <EditText android:id="@+id/editText4" android:layout_width="194dp" android:layout_height="wrap_content" android:layout_below="@+id/textView4" android:layout_alignLeft="@+id/textView4" android:singleLine="true" tools:layout_editor_absoluteX="190dp" tools:layout_editor_absoluteY="257dp" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText4" android:layout_alignLeft="@+id/editText4" android:text="Alamat" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="257dp" /> <EditText android:id="@+id/editText5" android:layout_width="198dp" android:layout_height="wrap_content" android:layout_below="@+id/textView5" android:layout_alignLeft="@+id/textView5" android:singleLine="true" tools:layout_editor_absoluteX="188dp" tools:layout_editor_absoluteY="314dp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText5" android:layout_alignParentBottom="true" android:text="Simpan" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="433dp" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button1" android:layout_alignBottom="@+id/button1" android:layout_toRightOf="@+id/textView4" android:text="Back" tools:layout_editor_absoluteX="270dp" tools:layout_editor_absoluteY="433dp" /> </android.support.constraint.ConstraintLayout>
5. Membuat Perintah Update
·
Perintah ini digunakan untuk erubah data yang
ada di database :
Script UbahBiodata.java
package com.example.sonyvaio.crud_sql_lite_133; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class UpdateBiodata extends AppCompatActivity { protected Cursor cursor; DataHelper dbHelper; Button ton1, ton2; EditText text1, text2, text3, text4, text5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update_biodata); dbHelper = new DataHelper(this); text1 = (EditText) findViewById(R.id.editText1); text2 = (EditText) findViewById(R.id.editText2); text3 = (EditText) findViewById(R.id.editText3); text4 = (EditText) findViewById(R.id.editText4); text5 = (EditText) findViewById(R.id.editText5); SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM biodata WHERE nama = '" + getIntent().getStringExtra("nama") + "'",null); cursor.moveToFirst(); if (cursor.getCount()>0) { cursor.moveToPosition(0); text1.setText(cursor.getString(0).toString()); text2.setText(cursor.getString(1).toString()); text3.setText(cursor.getString(2).toString()); text4.setText(cursor.getString(3).toString()); text5.setText(cursor.getString(4).toString()); } ton1 = (Button) findViewById(R.id.button1); ton2 = (Button) findViewById(R.id.button2); ton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("update biodata set nama='"+ text2.getText().toString() +"', tgl='" + text3.getText().toString()+"', jk='"+ text4.getText().toString() +"', alamat='" + text5.getText().toString() + "' where no='" + text1.getText().toString()+"'"); Toast.makeText(getApplicationContext(),
"Berhasil", Toast.LENGTH_LONG).show(); MainActivity.ma.RefreshList(); finish(); } }); ton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
Script activity_ubah_biodata.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android
="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".UpdateBiodata" >
<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:singleLine="true" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" > <requestFocus /> </EditText>
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Nomor" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="10dp" android:text="Nama" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText2" android:layout_below="@+id/editText2" android:layout_marginTop="10dp" android:text="Tanggal Lahir" /> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_alignLeft="@+id/textView3" android:layout_below="@+id/textView3" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText3" android:layout_below="@+id/editText3" android:layout_marginTop="10dp" android:text="Jenis Kelamin" /> <EditText android:id="@+id/editText4" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_alignLeft="@+id/textView4" android:layout_below="@+id/textView4" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText4" android:layout_below="@+id/editText4" android:layout_marginTop="10dp" android:text="Alamat" /> <EditText android:id="@+id/editText5" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_alignLeft="@+id/textView5" android:layout_below="@+id/textView5" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText5" android:layout_alignParentBottom="true" android:text="Update" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button1" android:layout_alignBottom="@+id/button1" android:layout_toRightOf="@+id/textView4" android:text="Back" /> </android.support.constraint.ConstraintLayout>
6. Membuat Perintah Tampil
·
Perintah ini digunakan untuk melihat data yang telah
tersimpan di database
Script LihatBiodata.java
package com.example.sonyvaio.crud_sql_lite_133; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; public class LihatBiodata extends AppCompatActivity {
protected Cursor cursor; DataHelper dbHelper; Button ton2; TextView text1, text2, text3, text4, text5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lihat_biodata); dbHelper = new DataHelper(this); text1 = (TextView) findViewById(R.id.textView1); text2 = (TextView) findViewById(R.id.textView2); text3 = (TextView) findViewById(R.id.textView3); text4 = (TextView) findViewById(R.id.textView4); text5 = (TextView) findViewById(R.id.textView5); SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM biodata WHERE nama = '" + getIntent().getStringExtra("nama") + "'",null); cursor.moveToFirst(); if (cursor.getCount()>0) { cursor.moveToPosition(0); text1.setText(cursor.getString(0).toString()); text2.setText(cursor.getString(1).toString()); text3.setText(cursor.getString(2).toString()); text4.setText(cursor.getString(3).toString()); text5.setText(cursor.getString(4).toString()); } ton2 = (Button) findViewById(R.id.button1); ton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
Script activity_lihat_biodata.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android
="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LihatBiodata" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="104dp" android:layout_marginTop="20dp" android:text="TextView" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="20dp" android:text="TextView" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="20dp" android:text="TextView" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView3" android:layout_below="@+id/textView3" android:layout_marginTop="20dp" android:text="TextView" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView4" android:layout_below="@+id/textView4" android:layout_marginTop="20dp" android:text="TextView" /> <TextView android:id="@+id/TextView05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView5" android:layout_alignBottom="@+id/textView5" android:layout_alignLeft="@+id/TextView03" android:text="Alamat" /> <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView4" android:layout_alignBottom="@+id/textView4" android:layout_alignLeft="@+id/TextView04" android:text="Jenis Kelamin" /> <TextView android:id="@+id/TextView04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView3" android:layout_alignLeft="@+id/TextView02" android:layout_alignBottom="@+id/textView3" android:text="Tanggal Lahir" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="94dp" /> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignLeft="@+id/TextView01" android:text="Nama" /> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView2" android:layout_alignParentLeft="true" android:text="Nomor" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/TextView05" android:layout_alignLeft="@+id/TextView05" android:text="Back" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="447dp" /> </android.support.constraint.ConstraintLayout>
C.
Menjalankan Program
Setalah semua Implementasi program selesai saatnya menjalankan
aplikasinya:
Hasil Tampilan Awal Program :
Jika user(pengguna) menekan tombol +BUAT
BIODATA BARU maka akan tampil menu seperti dibawah.
Hasil Tampilan untuk Insert data
Jika
pengguna menekan salah satu nama. Maka akan muncul pilihan dalam bentuk Context
menu yang terdiri dari mengapdate, melihat atau menghapus data . seperti tampilan
dibawah :
Hasil Tampilan untuk melihat Biodata :
Hasil Tampilan untuk Update Biodata :







Tidak ada komentar:
Posting Komentar