Membuat Class DBHelper
Pada kesempatan kali
ini saya akan mencoba berbagi tentang bagaimana membuat database di android.
Pertama kita buat
project baru terlebih dahulu.
Setelah project baru
jadi, silahkan buat class baru di package aplikasi. Kemudian kasih nama
class'nya DBHelper. Kemudian ketikan kode program berikut ini.
package
merry.merrysdatabase;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
import
android.util.Log;
public class DBHelper extends SQLiteOpenHelper
{
public DBHelper(Context context) {
super(context, db_name,
null, db_version);
// TODO Auto-generated
constructor stub
}
//deklarasi konstanta
public static final String
TABLE_NAME = "data_inventori";
public static final String COLUMN_ID
= "_id";
public static final String
COLUMN_NAME = "nama_barang";
public static final String
COLUMN_MERK = "merk_barang";
public static final String
COLUMN_HARGA = "harga_barang";
private static final String db_name
="inventori.db";
private static final int db_version=1;
//perintah SQL untuk membuat tabel
baru
private static final String
db_create = "create table "
+ TABLE_NAME + "("
+ COLUMN_ID +" integer primary key
autoincrement, "
+ COLUMN_NAME+ " varchar(50) not null,
"
+ COLUMN_MERK+ " varchar(50) not null,
"
+ COLUMN_HARGA+ " varchar(50) not
null);";
//mengeksekusi
perintah SQL untuk membuat tabel baru
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(db_create);
}
@Override
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(DBHelper.class.getName(),
"Upgrading database from version "
+
oldVersion + " to "
+ newVersion + ", which
will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS
" + TABLE_NAME);
onCreate(db);
}
}
Membuat Class DBDataSource
Pada project yang sama, silahkan tambahkan
class baru dengan nama DBDataSource. Setelah selesai ketikkan program berikut.
package
merry.merrysdatabase;
import
java.util.ArrayList;
import
android.content.ContentValues;
import
android.content.Context;
import
android.database.Cursor;
import
android.database.SQLException;
import
android.database.sqlite.SQLiteDatabase;
import
android.util.Log;
public
class DBDataSource {
//inisialisasi SQLLiteDatabase
private SQLiteDatabase database;
//inisialisasi kelas DBHelper
private DBHelper dbHelper;
//ambil semua nama kolom dalam
bentuk array
private String[] allColumns = {
DBHelper.COLUMN_ID,
DBHelper.COLUMN_NAME,
DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA};
//DBHelper diinstantiasi pada
constructor
public DBDataSource(Context context)
{
dbHelper = new
DBHelper(context);
}
//membuka atau membuat sambungan
baru ke database
public void open() throws
SQLException
{
database =
dbHelper.getWritableDatabase();
}
//menutup sambungan
public void close()
{
dbHelper.close();
}
//method untuk membuat atau
memasukkan data ke database
public Barang createBarang(String
nama, String merk, String harga) {
/*membuat
ContentValues, berfungsi untuk memasangkan data dengan nama-nama kolom pada
database*/
ContentValues values =
new ContentValues();
values.put(DBHelper.COLUMN_NAME,
nama);
values.put(DBHelper.COLUMN_MERK,
merk);
values.put(DBHelper.COLUMN_HARGA,
harga);
//mengeksekusi
perintah SQL Insert data
long
insertId = database.insert(DBHelper.TABLE_NAME, null,values);
memanggil
perintah SQLSelect menggunakan Cursor
Cursor cursor =
database.query(DBHelper.TABLE_NAME,
allColumns,
DBHelper.COLUMN_ID + " = " + insertId, null,
null,
null, null);
cursor.moveToFirst();
//mengubah objek pada
Cursor ke dalam objek Barang
Barang newBarang =
cursorToBarang(cursor);
cursor.close();
return newBarang;
}
private Barang cursorToBarang(Cursor
cursor) {
Barang barang = new Barang();
Log.v("info", "The
getLONG "+cursor.getLong(0));
Log.v("info", "The
setLatLng "+cursor.getString(1)+
","+cursor.getString(2));
barang.setId(cursor.getLong(0));
barang.setNama_barang(cursor.getString(1));
barang.setMerk_barang(cursor.getString(2));
barang.setHarga_barang(cursor.getString(3));
return barang;
}
//mengambil semua data barang
public ArrayList<Barang>
getAllBarang() {
ArrayList<Barang>
daftarBarang = new ArrayList<Barang>();
Cursor cursor =
database.query(DBHelper.TABLE_NAME,
allColumns,
null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Barang barang =
cursorToBarang(cursor);
daftarBarang.add(barang);
cursor.moveToNext();
}
cursor.close();
return daftarBarang;
}
}
Pada project yang sama, silahkan tambahkan class baru dengan nama Barang.
Setelah selesai ketikan program berikut.
package merry.merrysdatabase;
public class Barang {
private long id;
private String nama_barang;
private String merk_barang;
private String harga_barang;
public Barang()
{
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNama_barang() {
return nama_barang;
}
public void setNama_barang(String nama_barang) {
this.nama_barang = nama_barang;
}
public String getMerk_barang() {
return merk_barang;
}
public void setMerk_barang(String merk_barang) {
this.merk_barang = merk_barang;
}
public String getHarga_barang() {
return harga_barang;
}
public void setHarga_barang(String harga_barang) {
this.harga_barang = harga_barang;
}
@Override
public String toString()
{
return "Barang\t: "+ nama_barang +"\nMerk\t\t: "+ merk_barang + "\nHarga\t\t: "+ harga_barang;
}
}
Pada project yang sama, silahkan tambahkan class baru dengan nama
CreateData. Setelah selesai ketikan program berikut.
package merry.merrysdatabase;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CreateData extends Activity implements OnClickListener {
private Button buttonSubmit;
private EditText edNama;
private EditText edMerk;
private EditText edHarga;
private DBDataSource dataSource;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.createdata);
buttonSubmit = (Button) findViewById(R.id.buttom_submit);
buttonSubmit.setOnClickListener(this);
edNama = (EditText) findViewById(R.id.nama_barang);
edHarga = (EditText) findViewById(R.id.harga_barang);
edMerk = (EditText) findViewById(R.id.merk_barang);
dataSource = new DBDataSource(this);
dataSource.open();
}
@Override
public void onClick(View v) {
String
nama = null;
String merk = null;
String harga = null;
@SuppressWarnings("unused")
Barang barang = null;
if(edNama.getText()!=null && edMerk.getText()!=null && edHarga.getText()!=null)
{
nama = edNama.getText().toString();
merk = edMerk.getText().toString();
harga = edHarga.getText().toString();
}
switch(v.getId())
{
case R.id.buttom_submit:
barang = dataSource.createBarang(nama, merk, harga);
Toast.makeText(this, "Masuk
Barang\n" +
"nama\t: " +
barang.getNama_barang() +
"\nmerk\t: " +
barang.getMerk_barang() +
"\nharga\t: " +
barang.getHarga_barang(), Toast.LENGTH_LONG).show();
break;
}
}
}
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:id="@+id/nama_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="text"
android:hint="Nama
Barang"
android:ems="10"
>
<requestFocus />
</EditText>
<EditText
android:id="@+id/merk_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="text"
android:hint="Merk
Barang"
android:ems="10"
>
<requestFocus />
</EditText>
<EditText
android:id="@+id/harga_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="number"
android:hint="Harga
Barang"
android:ems="10"
>
<requestFocus />
</EditText>
<Button
android:id="@+id/buttom_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
/>
</LinearLayout>
Pada project yang sama, silahkan
tambahkan class baru dengan nama Menu. Setelah selesai ketikan program berikut.
package merry.merrysdatabase;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Menu extends Activity implements OnClickListener {
private Button bTambah;
private Button bLihat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
bTambah = (Button) findViewById(R.id.button_tambah);
bTambah.setOnClickListener(this);
bLihat = (Button) findViewById(R.id.button_lihat);
bLihat.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// // TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button_tambah :
Intent
i = new Intent(this, CreateData.class);
startActivity(i);
break;
case R.id.button_lihat :
Intent
i2 = new Intent(this, ViewData.class);
startActivity(i2);
break;
}
}
}
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/nama_app"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/nama_app"
android:textSize="20sp"
/>
<Button
android:id="@+id/button_tambah"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/nama_app"
android:layout_centerHorizontal="true"
android:text="@string/tombol_tambah"
/>
<Button
android:id="@+id/button_lihat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/button_tambah"
android:layout_centerHorizontal="true"
android:text="@string/tombol_lihat"
/>
</RelativeLayout>
Pada project yang sama, silahkan
tambahkan class baru dengan nama ViewData. Setelah selesai ketikan program
berikut.
package merry.merrysdatabase;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class ViewData extends
ListActivity {
private
DBDataSource dataSource;
private
ArrayList<Barang> values;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewdata);
dataSource = new DBDataSource(this);
dataSource.open();
values = dataSource.getAllBarang();
ArrayAdapter<Barang> adapter = new
ArrayAdapter<Barang>(this,
android.R.layout.simple_list_item_1,
values);
setListAdapter(adapter);
}
}
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/data_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_view"
android:layout_gravity="center_horizontal"
android:background="#0000ff"
/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Setelah semua class dan
xml jadi, langkah selanjutnya adalah memodifikasi file AndrodiManifest.xml.
Menjadi seperti berikut ini.
Menjadi seperti berikut ini.
<?xml version="1.0"
encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="merry.merrysdatabase"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17"
/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<activity
android:name="merry.merrysdatabase.CreateData"
android:label="@string/app_name"
>
</activity>
<activity
android:name="merry.merrysdatabase.Menu"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name="merry.merrysdatabase.ViewData"
android:label="@string/app_name"
>
</activity>
</application>
</manifest>
Jika kita klik Tombol
Tambah maka akan menampilkan layout dari createdata.xml untuk menambahkan data barang
seperti gambar di bawah ini.
Jika kita klik Tombol
Lihat maka akan menampilkan layout dari viewdata.xml yang berisi data yang
sudah kita tambahkan pada screen createdata tadi.
Selamat mencoba :)


Tidak ada komentar:
Posting Komentar