Menampilkan Isi Kontak dari Database

Kita akan tetap menggunakan kode yang sama dengan latihan sebelumnya dengan modifikasi pada file java: MainActivity.java

1. Siapkan class pembantu (sama dengan latihan sebelumnya)

File java: DBAdapter.java (berfungsi sebagai class pembantu):
package com.example.savingtodb;  
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {
static final String KEY_ROWID = "_id";
static final String KEY_NAME = "name";
static final String KEY_EMAIL = "email"; 
static final String TAG = "DBAdapter";
static final String DATABASE_NAME = "MyDB";
static final String DATABASE_TABLE =" contacts"; 
static final int DATABASE_VERSION = 1;  
static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoincrement, "
+ "name text not null, email text not null);";  
final Context context;
DatabaseHelper DBHelper;
SQLiteDatabase db;  
public DBAdapter(Context ctx){
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}  
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME,null,DATABASE_VERSION);
}  
@Override
public void onCreate(SQLiteDatabase db)
{
try {
db.execSQL(DATABASE_CREATE);
}
catch (SQLException sqle){
sqle.printStackTrace();
}
}  
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG,"Upgrading database from version " + oldVersion + " to " + newVersion +
", which will destroy all old data");
db.execSQL("DROP TABLE IF EXIST contacts");
onCreate(db);
}
}  
//--open database--
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}  
//--close database--
public void close()
{
DBHelper.close();
}  
//--insert a contact into database--
public long insertContact(String name, String email)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, name);
initialValues.put(KEY_EMAIL, email);
return db.insert(DATABASE_TABLE,null, initialValues);
}

//--delete particular contact--
public boolean deleteContact(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}  
//--retrieves all contacts--
public Cursor getAllContacts()
{
return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME, KEY_EMAIL}, null, null, null, null,null);
}  
//--retrieves particular contact--
public Cursor getContact(long rowId) throws SQLException
{
Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_EMAIL}, KEY_ROWID
+ "=" + rowId, null,null,null,null,null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}

//--updates a contact--
public boolean updateContact(long rowId, String name, String email)
{
ContentValues args = new ContentValues();
args.put(KEY_NAME, name);
args.put(KEY_EMAIL, email);
return db.update(DATABASE_TABLE,args, KEY_ROWID + "=" + rowId, null) > 0;
}
}

2. Modifikasi file java dari latihan sebelumnya: MainActivity.java seperti berikut:
package com.example.savingtodb; 
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast; 
public class MainActivity extends AppCompatActivity { 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DBAdapter db = new DBAdapter(this); 
/*--add a contact--
db.open();
...
*/ 
//--get all contacts--
db.open();
Cursor c = db.getAllContacts();
if (c.moveToFirst())
{
do {
DisplayContact(c);
} while (c.moveToNext());
}
db.close();
}
public void DisplayContact(Cursor c)
{
Toast.makeText(this, "id: "+ c.getString(0)+"\n"+
"Name: "+c.getString(1)+"\n"+
"Email: "+c.getString(2), Toast.LENGTH_LONG).show();
}
}
Jalankan di emulator dan tampilan seperti gambar berikut di bawah ini:
Menampilkan kontak satu per satu

Penjelasan:

Method 'getAllContacts()' dari class DBAdapter mengambil semua kontak yang disimpan di database. Hasilnya dikembalikan sebagai object 'Cursor'. Untuk menampilkan semua kontak, kita terlebih dahulu perlu memanggil method 'moveToFirst()' dari object 'Cursor'. Bila berhasil (artinya minimal ada satu baris di dala database) maka kita akan menampilkan detil-detil kontak dengan menggunakan method 'DisplayContact()'. Untuk berpindah ke kontak berikutnya, kita gunakan method 'moveToNext()' dari object 'Cursor'

No comments: