Android Tutorial CRUD SQLite DB (Update DB)
Bismillah. Assalamu'alaikum sobat zainsoft. Kita kembali melanjutkan tutorial SQlite DB di android. Sebelumnya kita telah berhasil untuk entry data account dan melihat hasil dari entry tersebut. Sekarang kita akan coba untuk meng-update data account tersebut. Kita akan menambahkan satu method di kelas DBHelper. Dimana nanti method tersebut akan dipanggil dari kelas AccountActivity.javapublic int updateAccount(String accountIdOld, String accountID, String nama, String alamat, String noponsel, String keterangan){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("account_id",accountID);
values.put("nama",nama);
values.put("alamat",alamat);
values.put("no_ponsel",noponsel);
values.put("keterangan",keterangan);
Toast.makeText(context, "Edit DB Berhasil", Toast.LENGTH_SHORT).show();
return db.update("account",values, "account_id"+"=?",new String[]{String.valueOf(accountIdOld)});
}Dari Skrip diatas, dapat kita akan memerintahkan untuk mengubah accountID, nama, alamat, noponsel, dan keterangan dimana account_id yang diubah adalah account_id yang lama (sebelum diubah) yang sebelumnya kita definisikan dengan nama accountIdOld. Detail skrip lengkap dari kelas DBHelper.java adalah sebagai berikut
public class DBHelper extends SQLiteOpenHelper {
private static String DB_NAME = "zainsoft.db";
private static Integer DB_VERSION = 2;
private final Context context;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE account(" +
"account_id char(20) primary key," +
"nama char(20)," +
"alamat char(255)," +
"no_ponsel char(20)," +
"keterangan char(250))"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS account");
onCreate(db);
}
public long insertAccount(String account_id, String nama, String alamat, String noponsel, String keterangan) {
SQLiteDatabase db = this.getWritableDatabase();
// Creating content values
ContentValues values = new ContentValues();
values.put("account_id", account_id);
values.put("nama", nama);
values.put("alamat", alamat);
values.put("no_ponsel", noponsel);
values.put("keterangan", keterangan);
long insert = db.insert("account", null, values);
Toast.makeText(context, "Entry Data Sukses", Toast.LENGTH_LONG).show();
return insert;
}
public Cursor getDataAccount() {
String selectQueryAccount = "select * from account";
SQLiteDatabase db = this.getReadableDatabase();
Cursor c_account = db.rawQuery(selectQueryAccount, null);
System.out.println("Count: " + c_account.getCount());
if (c_account.getCount() > 0) {
AccountActivity.table_kosong = false;
if (c_account.moveToFirst()) {
do {
ModelAccount modelAccount = new ModelAccount();
modelAccount.setAccount_id(c_account.getString(c_account.getColumnIndex("account_id")));
modelAccount.setNama(c_account.getString(c_account.getColumnIndex("nama")));
modelAccount.setAlamat(c_account.getString(c_account.getColumnIndex("alamat")));
modelAccount.setNo_ponsel(c_account.getString(c_account.getColumnIndex("no_ponsel")));
modelAccount.setKeterangan(c_account.getString(c_account.getColumnIndex("keterangan")));
} while (c_account.moveToNext());
}
} else {
AccountActivity.table_kosong = true;
}
return c_account;
}
public int updateAccount(String accountIdOld, String accountID, String nama, String alamat, String noponsel, String keterangan){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("account_id",accountID);
values.put("nama",nama);
values.put("alamat",alamat);
values.put("no_ponsel",noponsel);
values.put("keterangan",keterangan);
Toast.makeText(context, "Edit DB Berhasil", Toast.LENGTH_SHORT).show();
return db.update("account",values, "account_id"+"=?",new String[]{String.valueOf(accountIdOld)});
}
}Kita fokus sebentar pada method getDataAccount() di kelas DBHelper.java. Disana ada pengondisian if (c_account.getCount() > 0). Artinya jika data yang akan ditampilkan lebih besar dari nol, maka variable table_kosong pada kelas AccountActivity.java bernilai false; Jika data yang akan ditampilkan bernilai nol, maka variable table_kosong akan bernilai true.
if (table_kosong == true) {
dbHelper.insertAccount(accountId.getText().toString(), nama.getText().toString(), alamat.getText().toString(), noponsel.getText().toString(), keterangan.getText().toString());
onBackPressed();
}
else if (table_kosong == false){
dbHelper.updateAccount(modelAccount.getAccount_id(),accountId.getText().toString(), nama.getText().toString(), alamat.getText().toString(), noponsel.getText().toString(), keterangan.getText().toString());
onBackPressed();
}jika table_kosong bernilai true, maka buttonSimpan memasukkan data baru. Tetapi kita table_kosong bernilai false, maka buttonSimpan akan menubah semua data account dimana account_id yang digunakan sebagai parameter adalah account_id yang sebelum diubah. Skrip lengkap AccountActivity.java adalah sebagai berikut:
public class AccountActivity extends AppCompatActivity {
DBHelper dbHelper;
Button buttonSimpan;
ModelAccount modelAccount = new ModelAccount();
TextInputEditText accountId,nama,alamat,noponsel,keterangan;
public static boolean table_kosong = false;
String status_entry = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
dbHelper = new DBHelper(this);
buttonSimpan = findViewById(R.id.button_simpan);
accountId = findViewById(R.id.input_account_id);
nama = findViewById(R.id.input_nama);
alamat = findViewById(R.id.input_alamat);
noponsel = findViewById(R.id.input_noponsel);
keterangan = findViewById(R.id.input_keterangan);
buttonSimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (
TextUtils.isEmpty(accountId.getText().toString()) ||
TextUtils.isEmpty(nama.getText().toString()) ||
TextUtils.isEmpty(alamat.getText().toString()) ||
TextUtils.isEmpty(noponsel.getText().toString()) ||
TextUtils.isEmpty(keterangan.getText().toString())){
Toast.makeText(AccountActivity.this, "Mohon cek kembali\nData tidak boleh kosong", Toast.LENGTH_SHORT).show();
}
else{
if (table_kosong == true) {
dbHelper.insertAccount(accountId.getText().toString(), nama.getText().toString(), alamat.getText().toString(), noponsel.getText().toString(), keterangan.getText().toString());
onBackPressed();
}
else if (table_kosong == false){
dbHelper.updateAccount(modelAccount.getAccount_id(),accountId.getText().toString(), nama.getText().toString(), alamat.getText().toString(), noponsel.getText().toString(), keterangan.getText().toString());
onBackPressed();
}
}
}
});
if (table_kosong == true){
accountId.requestFocus();
status_entry = "add";
}
else if (table_kosong == false){
dbHelper.getDataAccount();
accountId.setText(modelAccount.getAccount_id());
nama.setText(modelAccount.getNama());
alamat.setText(modelAccount.getAlamat());
noponsel.setText(modelAccount.getNo_ponsel());
keterangan.setText(modelAccount.getKeterangan());
status_entry = "edit";
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
}Demikian tutorial untuk mengubah (update) data di SQLite DB. Gampang bukan? Sobat dapat juga melihat channel zainsoft di Youtube untuk melihat running project tutorial Update SQLite ini. Semoga bermanfaat. Wassalam.
Categories: Database
Leave a comment