1.1.2.
Relasi antara database SQLite dengan Android
Untuk Android, SQLite dijadikan satu di dalam Android runtime,
sehingga setiap aplikasi Android dapat membuat basis data
SQLite. Karena SQLite menggunakan antarmuka SQL, cukup
mudah untuk digunakan orang orang dengan pengalaman lain
yang berbasis databases. Terdapat beberapa alasan mengapa
SQLite sangat cocok untuk pengembangan aplikasi Android, yaitu
:
- Database dengan konfigurasi nol. Artinya tidak ada
konfigurasi
database
untuk
para
developer.
Ini
membuatnya relatif mudah digunakan.
- Tidak memiliki server.
- Tidak ada proses database SQLite yang berjalan. Pada
dasarnya satu set libraries menyediakan fungsionalitas
database.
- Single-file database. Ini membuat keamanan database
secara langsung. Open source. Hal ini membuat developer
mudah dalam pengembangan aplikasi.
long id;
String namaBarang;
String merkBarang;
String hargaBarang;
public Barang() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNamaBarang() {
return namaBarang;
}
langkah
untuk
mengimplementasikan fungsi fungsi tersebut di dalam kelas
DBHelper.java (untuk nama variable dansegala macam atribut
apabila ingin berbeda dapat disesuaikan sendiri).
- Pendeklarasian package yang akan digunakan di dalam
kelas DBHelper.java. Berikut adalah source code setelah
package di deklarasikan.
package sqlite.modul.yufri.databasesqlite;
//deklarasi import package
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Yufri on 30/04/2015.
*/
public class DBHelper {
}
Setelah
itu
kelas
DBHelper.java
diextends
ke
SQLiteOpenHelper, apabila nanti ada keterangan error
klik saja error tersebut. Nanti akan meminta untuk
mengimplementasikan methods, klik saja maka nanti akan
muncul beberapa method tambahan yaitu method
onCreate() dan onUpgrade(). Source code kelas
DBHelper.java akan menjadi seperti berikut.
package sqlite.modul.yufri.databasesqlite;
//deklarasi import package
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Yufri on 30/04/2015.
*/
public class DBHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
/**
* Created by Yufri on 30/04/2015.
*/
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
}
}
Dan@Override
yang terakhir adalah menambahkan perintah pada
method
onUpgrade(),
yaitu perintah
yang
public void
onUpgrade(SQLiteDatabase
sqLiteDatabase,
int i, digunakan
int i2) {
untuk
mengupgrade versi database. Tetapi untuk perintah
}
}
pada
method onUpgrade() dijalankan apabila ingin
mengupgrade versi database saja. Baik, setelah semua
fungsi sudah diimplementasikan pada masing masing
method, maka berikut adalah source code lengkap dari
kelas DBHelper.java.
package sqlite.modul.yufri.databasesqlite;
//deklarasi import package
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Yufri on 30/04/2015.
*/
public class DBHelper extends SQLiteOpenHelper {
/** deklarasi konstanta-konstanta yang digunakan pada database,
seperti nama tabel,
nama-nama kolom, nama database, dan versi dari database **/
public static final String TABLE_NAME = "barang";
public static final String COLUMN_ID = "barang_id";
public static final String COLUMN_NAME = "barang_nama";
public static final String COLUMN_MERK = "barang_merk";
public static final String COLUMN_HARGA = "barang_harga";
private static final String db_name = "db_barang.db";
private static final int db_version = 1;
// Perintah SQL untuk membuat tabel database 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);";
public DBHelper(Context context) {
super(context, db_name, null, db_version);
}
//mengeksekusi perintah SQL di atas untuk membuat tabel database
baru
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(db_create);
}
// dijalankan apabila ingin mengupgrade database
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
Log.w(DBHelper.class.getName(), "Upgrading database from version "
+ i + " to "
+ i2 + ", which will destroy all old data");
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(sqLiteDatabase);
}
Setelah} selesai membuat kelas DBHelper.java, sekarang kita
/**
* Created by Yufri on 30/04/2015.
*/
public class DBDataSource {
//inisialisasi
kelas
DBHelper
//ambil semua
nama
kolom
private
DBHelper
dbHelper;
private String[] allColumns = { DBHelper.COLUMN_ID,
DBHelper.COLUMN_NAME,
DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA };
}
//DBHelper
diinstantiasi
pada constructor
//inisialiasi SQLite
Database
public
context) {
privateDBDataSource(Context
SQLiteDatabase database;
dbHelper = new DBHelper(context);
}
//inisialisasi kelas DBHelper
private DBHelper dbHelper;
//membuka/membuat sambungan baru ke database
public
open()
throws
SQLException {
//ambilvoid
semua
nama
kolom
database
= dbHelper.getWritableDatabase();
private
String[]
allColumns = { DBHelper.COLUMN_ID,
}
DBHelper.COLUMN_NAME,
};
ApabilaDBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA
sudah sekarang lanjut membuat method
untuk
//menutup sambungan ke database
mengcreate
data
menginsertkan data ke dalam
public
void close()
{ atau
//DBHelper
diinstantiasi
pada constructor
dbHelper.close();
public DBDataSource(Context
context)
{
database.
Di dalam method
tersebut
nantinya akan berisi
} dbHelper = new DBHelper(context);
beberapa
perintah seperti memasangkan data dengan
} }
Selanjutnya
apabila
sudah
selesai
membuat
kelas
DBHelper.java dan DBDataSource.java, sekarang kita
deklarasikan terlebih dahulu beberapa string yang akan kita
gunakan pada aplikasi di dalam file String.xml, karena di dalam
membuat sebuah aplikasi Android yang profesional semua string
sebaiknya jangan di tulis sendiri tetapi dijadikan satu dalam file
String.xml sehingga apabila kita akan melakukan akses menjadi
lebih mudah. Berikut adalah source code lengkap dari file
String.xml (untuk penamaan string apabila ingin berbeda dapat
disesuaikan sendiri).
<resources>
<string name="app_name">Database SQLite</string>
<string name="activity_tambah_data">Tambah Data</string>
<string name="activity_data_barang">Data Barang</string>
<string name="activity_ubah_data">Ubah Data</string>
<string name="tombol_tambah_data">Tambah Data</string>
<string name="tombol_data">Data Barang</string>
<string name="tombol_tambah">Tambah</string>
<string name="tombol_ubah">Ubah</string>
<string name="tombol_batal">Batal</string>
<string name="tombol_dialog_ubah">Ubah</string>
<string name="tombol_dialog_hapus">Hapus</string>
<string name="hint_nama">Nama Barang</string>
<string name="hint_merk">Merk Barang</string>
<string name="hint_harga">Harga Barang</string>
<string name="judul_data">Data Barang</string>
<string name="judul_ubah_data">Ubah Data | ID :</string>
</resources>
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
/**
* Created by Yufri on 30/04/2015.
*/
public class MenuActivity extends Activity implements OnClickListener {
@Override
public void onClick(View view) {
}
Selanjutnya
deklarasikan variable button dan intent,
}
varible button fungsinya untuk memanggil button yang
sudah dibuat di layout dan intent fungsinya untuk
memanggil kelas lain. Dan apabila pada saat awal
pembuatan kelas tidak ada method onCreate() maka buat
sendiri method tersebut. Dan di dalam method onCreate()
panggil varible yang sudah dideklarasikan sebelumnya,
serta panggil aksi button yang sudah dibuat. Berikut
adalah source code dari kelas MenuActivity.java setelah
ditambahkan
beberapa method.
/**
* Created by Yufri on 30/04/2015.
package sqlite.modul.yufri.databasesqlite;
*/
public class MenuActivity extends Activity implements OnClickListener {
import android.app.Activity;
import android.content.Intent;
//Pendeklarasian variabel button dan intent. Intent fungsinya untuk
import android.os.Bundle;
memanggil kelas lain.
import android.view.View;
private Intent intent;
import android.view.View.OnClickListener;
private Button buttonTambahData;
import android.widget.Button;
private Button buttonDataBarang;
/** Method onCreate berfungsi untuk memanggil variable yang sudah
dideklarasikan
dan juga mengeset aksi dari button **/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
buttonTambahData = (Button) findViewById(R.id.buttonTambahData);
buttonDataBarang = (Button) findViewById(R.id.buttonDataBarang);
buttonTambahData.setOnClickListener(this);
buttonDataBarang.setOnClickListener(this);
}
@Override
public void onClick(View view) {
}
}
<EditText
android:id="@+id/editTextMerk"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="text"
android:hint="@string/hint_merk"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editTextHarga"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:inputType="number"
android:hint="@string/hint_harga"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/buttonTambah"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tombol_tambah" />
</LinearLayout>
onClick() dengan
menginisialisasi data barang yang akan dimasukkan
dengan
memanggil
//inisialisasi
kontroller/Datagetter
Source yang sudah dibuat pada
private DBDataSource dataSource;
controller Barang.java. Berikut adalah source code
@Override dari
lengkap
kelas
TambahActivity.java
setelah
public void onCreate(Bundle savedInstanceState) {
ditambahkan
perintah pada method onClick.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tambah_data);
package
sqlite.modul.yufri.databasesqlite;
buttonTambah
= (Button) findViewById(R.id.buttonTambah);
import
android.os.Bundle;
editTextNama
= (EditText) findViewById(R.id.editTextNama);
import
android.app.Activity;
editTextMerk
= (EditText) findViewById(R.id.editTextMerk);
import
android.view.View;
editTextHarga
= (EditText) findViewById(R.id.editTextHarga);
import
android.view.View.OnClickListener;
import android.widget.Button;
// instanstiasi
kelas DBDataSource
import
android.widget.EditText;
dataSource
= new DBDataSource(this);
import
android.widget.Toast;
/** //membuat sambungan baru ke database
dataSource.open();
* Created
by Yufri on 30/04/2015.
*/
buttonTambah.setOnClickListener(this);
}
//KETIKA Tombol Submit Diklik
@Override
public void onClick(View view) {
// Inisialisasi data barang
String nama = null;
String merk = null;
String harga = null;
@SuppressWarnings("unused")
//inisialisasi barang baru (masih kosong)
Barang barang = null;
if(editTextNama.getText()!=null && editTextMerk.getText()!=null &&
editTextHarga.getText()!=null) {
/* jika field nama, merk, dan harga tidak kosong
* maka masukkan ke dalam data barang*/
nama = editTextNama.getText().toString();
merk = editTextMerk.getText().toString();
harga = editTextHarga.getText().toString();
}
switch (view.getId()) {
case R.id.buttonTambah:
// insert data barang baru
barang = dataSource.createBarang(nama, merk, harga);
//konfirmasi kesuksesan
Toast.makeText(this, "Masuk Barang\n" +
"Nama : " + barang.getNamaBarang() + "\n" +
"Merk : " + barang.getMerkBarang() + "\n" +
Tampilan Menu