Aplikasi dengan Database (SQLite) menggunakan android studio

PERTEMUAN KE – 11
Aplikasi dengan Database (SQLite)
A. TUJUAN :
Mahasiswa diharapkan dapat memahami dan mengetahui tentang komponen widget, yaitu
sqlite yang digunakan pada aplikasi mobile.
B. PEMBAHASAN PRAKTIKUM :
Pada praktikum kali ini kita akan membuat sebuah aplikasi yang mengimplementasikan sebuah database SQL yang akan digunakan sebagai penyimpan data yang diinputkan oleh user. Berikut adalah penjelasan dari scribt programnya :
1. Membuat desain interface pada CONTENT_MAIN.XML
<? xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.firman.firman163310023.MainActivity"
tools:showIn="@layout/activity_main"
android:orientation="vertical">
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nomor Hape: " >
</TextView>
<EditText
android:id="@+id/editText_num"
android:layout_width="232dp"
android:layout_height="wrap_content"
android:gravity="left"
android:phoneNumber="true" >
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout03"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/TextView02"
android:layout_width="92dp" android:layout_height="wrap_content"
android:text="Nama : " >
</TextView>
<EditText
android:id="@+id/editText_name"
android:layout_width="230dp"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:ems="10"
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/but_in"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="but_inClick"
android:text="Tambah" >
</Button>
<Button
android:id="@+id/but_Edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="but_EditClick"
android:text="Edit" >
</Button>
<Button
android:id="@+id/but_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="but_DelClick"
android:text="Hapus" >
</Button>
</LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DATA PHONEBOOK:" >
</TextView>
<ListView
android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
Penjelasan :
Scribt diatas merupakan scribt xml dari halaman interface utama yang akan ditampilkan pada aplikasi yang kita buat dimana pada tampilan halaman utama yang kita buat terdapat dua buah komponen editText yang akan digunakan untuk menginputkan data nomor telepon dan nama selain itu juga terdapat 3 buah komponen button yang akan digunakan sebagai tombol pemroses dimana fungsi dari tombol buttton tersebut adalah untuk menambahkan data kedalam database SQL ada juga yang untuk mengedit data pada database SQL serta ada juga yang digunakan untuk menghapus data pada database SQL ,serta ada juga komponen ListView yang akan digunakan untuk menampilkan data yang kita simpan.
2.       Membuat kelas MySQLHelper.java
Database SQLite pada aplikasi Android dibuat dengan class anak (subclass) dari class
SQLiteOpenHelper. Class tersebut menjadi class data access untuk database SQLite. 
Object dari class tersebut dapat digunakan oleh semua class lain yang mengakses database.
 Untuk membuatnya, kita buat class yang bernama MySQLHelper yang menjadi subclass dari 
SQLiteOpenHelper sebagai berikut.
public class MySQLHelper  extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";
    private static final int DATABASE_VERSION = 1;
    // Table name
    public static final String TABLE = "data";
    // Columns
    public static final String number = "number";
    public static final String name = "name";
    public MySQLHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table " + TABLE + "( _id"
                + " integer primary key autoincrement, " + number + " text not null, "
                + name + " text not null);";
        Log.d("Data", "onCreate: " + sql);
        db.execSQL(sql);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
}
penjelasan :
Constuctor dari class tersebut mendefinisikan nama dan versi database. 
Nama database kita beri nama “mydatabase.db” dan versi database adalah 1.
 Nama digunakan untuk memberikan penamaan database. Versi digunakan untuk 
memberikan nomor versi database yang digunakan dalam perubahan struktur database, 
misalnya penambahan tabel atau kolom pada database. Fungsi onCreate() dipanggil 
ketika ketika object dari class ini pertama kali dibuat dan akan memanggil fungsi 
createTable()yang berisi perintah untuk membuat tabel-tabel pada database. 
Fungsi onUpgrade() dipanggil ketika terjadi penambahan versi database yang berguna ketika 
kita ingin mengubah struktur database (penambahan atau perubahan tabel dan kolom).
3. Untuk mengakses database, maka kita perlu membuat tampilan (UI) dan class MySQLHelper pada project ini. Kita buat tampilan dengan file View2.xml seperti berikut ini.
<?xml version="1.0" encoding="utf-8"?>
  <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="myName" android:id="@+id/name">
    </TextView>
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="myNumber"
        android:id="@+id/number">
    </TextView>
    </TableLayout>
Penjelasan :
Scribt xml diatas merupakan tampilan ketika tombol button pada content_main.xml di klik dimana pada view2.xml ini akan menampilkan data yang telah diinputkan kedalam database SQL .
4. Menambahkan beberapa program java pada MainActivity.java
public class MainActivity extends AppCompatActivity {
    MySQLHelper dbHelper;
    private EditText ed_num;
    private EditText ed_name;
    protected Cursor cursor;
    private int id=-1;
    protected ListAdapter adapter;
    protected ListView numberList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
  public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
.setAction("Action", null).show();
            }
        });
  this.ed_num = (EditText) this.findViewById(R.id.editText_num);
  this.ed_name = (EditText) this.findViewById(R.id.editText_name);
  this.numberList = (ListView) this.findViewById(R.id.ListView01);
  dbHelper = new MySQLHelper(this);
  numberList.setSelected(true);
  numberList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
  cursor = db.rawQuery("SELECT * FROM data",null);
  cursor.moveToPosition(arg2);
  ed_num.setText(cursor.getString(1));
  ed_name.setText(cursor.getString(2));
  id=cursor.getInt(0);}});
        view();}
  //fungsi diatas berfungsi untuk menampilkan seluruh isi dari tabel 
//data kedalam listView dimana untuk menampilkan isi dari tabel kita perlu 
//menambahkan sebuah method rawQuery() yang diberi parameter sebuah perintah 
//query yaitu “SELECT * FROM data” yang berfungsi untuk menampilkan seluruh isi
// dari tabel data.untuk menampilkan hasilnya kita dapat menggunakan method view()
  private void addData(String num,String name) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
  try{
db.execSQL("insert into "+ MySQLHelper.TABLE + " values(null,'"+num+"','"+name+"')");
        }
  catch(Exception e){
  ed_num.setText(e.toString());}}
//untuk menambahkan data ke dalam database kita buat sebuah method bernama 
//addData()dimana pada method tersebuat berisi perintah query ("insert into "+
 //MySQLHelper.TABLE + " yang berfungsi untuk menambahkan data kedalam tabel pada 
//database yang telah kita buat tadi.

public void but_inClick(View v){
addData(ed_num.getText().toString(),ed_name.getText().toString());
view();}
//method diatas berfunsi sebagai event saat komponen button tambah di klik dimana 
//method ini akan memanggil method addData dan memberinya parameter berdasarkan data 
//yang disimpan pada variabel ed_num dan ed_name
  public void but_DelClick(View v){
SQLiteDatabase db = dbHelper.getWritableDatabase();
  try{
  if(id!=-1){
db.execSQL("delete from "+ MySQLHelper.TABLE +" where number='" +
  ed_num.getText().toString()+ "'");
view();}}
  catch(Exception e){
  ed_num.setText(e.toString());}}
//method diatas berfungsi sebagai event saat komponen button hapus di klik dimana di dalam 
//method ini berisi sebuah objek dengan nama db yang akan digunakan untuk memanggil kelas 
//SQLiteDatabase .pemabuatan objek ini berfungsi untuk mengakses method execSQL() yang 
//didalamnya kita isikan sebuah perintah query ("delete from "+ MySQLHelper.TABLE +" 
//where number='" +ed_num.getText().toString()+ "'") yang maksudnya adalah akan menghapus 
//data pada tabel dari database yang telah kita buat tadi dimana menghapus data ini 
//berdasarkan data dari variabel ed_num
public void but_EditClick(View v){
SQLiteDatabase db = dbHelper.getWritableDatabase();
  try{
  if(id!=-1){
db.execSQL("update data set number='"+ ed_num.getText().toString()+ "',name='"+ed_name.
getText().toString()+"' where _id="+id);
view();}}
catch(Exception e){ed_num.setText(e.toString());}}
//method diatas berfungsi sebagai event saat komponen button edit di klik dimana di 
//dalam method ini berisi sebuah objek dengan nama db yang akan digunakan untuk memanggil 
//kelas SQLiteDatabase .pemabuatan objek ini berfungsi untuk mengakses method execSQL() 
//yang didalamnya kita isikan sebuah perintah query ("update data set number='"+ 
//ed_num.getText().toString()+ "',name='"+ed_name.getText().toString()+"' where _id="+id) 
//yang maksudnya adalah akan merubah data pada tabel dari database yang telah kita buat 
//tadi dimana merubah data ini berdasarkan id yang kita pilih.
  private void view(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
  try{
  cursor = db.rawQuery("SELECT * FROM data",null);
  adapter = new SimpleCursorAdapter(this,R.layout.view2,cursor,new String[] 
{"number","name"},new int[] {R.id.number,R.id.name});
  numberList.setAdapter(adapter);}
  catch(Exception e){
  ed_num.setText(e.toString());}}
  //method view() diatas berfungsi untuk menampilkan isi dari tabel pada database yang 
//telah kita buat tadi dimana method view ini akan memanggil kelas view2.xml kedalam 
//komponen ListView.
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;}
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item); }}
Hasil :



A. PEMBAHASAN LATIHAN :
Pada latihan kali ini saya akan menambahkan sebauh fild tambahan yang digunakan untuk menginputkan data alamat kedalam database SQLite dan berikut adalah penjelasan dari program yang saya tambahkan :
1. Menambahkan scribt berikut pada kelas View2.xml
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="myAlamat"
android:id="@+id/alamat">
</TextView>
</TableLayout>
Penjelasan :
Pada desain interface database yang berada pada kelas view2 saya menambahkan sebuah
 komponen text view yang akan menampilkan isi dari database pada field alamat pada
 tabel yang telah kita buat tadi.
. 2. Menambahkan beberapa scribt pada kelas MainActivity.java
public class MainActivity extends AppCompatActivity {
MySQLHelper dbHelper;
private EditText ed_num;
private EditText ed_name;
private EditText ed_ala;
protected Cursor cursor;
private int id=-1;
protected ListAdapter adapter;
protected ListView numberList;
});

this.ed_num = (EditText) this.findViewById(R.id.editText_num);
this.ed_ala = (EditText) this.findViewById(R.id.editalamat);
//saya menambahkan sebuah variabel bernama ed_ala dimana variabel 
//tersebut akan berisi nilai yang diinputkan pada komponen EditText dengan 
//id editalamat

this.ed_name = (EditText) this.findViewById(R.id.editText_name);
this.numberList = (ListView) this.findViewById(R.id.ListView01);
dbHelper = new MySQLHelper(this);
numberList.setSelected(true);
numberList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM dataku",null);
//pada scribt diatas ini saya merubah tabel yang akan ditampilkan oleh perintah
// query menjadi dataku karena saya membuat sebuah database baru dimana nama 
//tabel yang saya buat juga baru.
cursor.moveToPosition(arg2);
ed_num.setText(cursor.getString(1));
ed_ala.setText(cursor.getString(2));
//berfungsi untuk menampilkan hasil dari variabel ed_ala kedalam sebuah tabel 
//pada urutan ke 3 berdasarkan indeks array yang diberikan.
ed_name.setText(cursor.getString(3));
id=cursor.getInt(0);}});
view();}
private void addData(String num,String name,String alamat) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
try{
db.execSQL("insert into "+ MySQLHelper.TABLE +" values(null,'"+num+"','" +name+"',
'"+alamat+"')");
//pada perintah query diatas saya menambahkan sebuah parameter dengan nama alamat
// untuk menambahkan data alamat kedalam database yang telah kita buat.}
catch(Exception e){
ed_num.setText(e.toString());}}
public void but_inClick(View v)
 {     
 addData(ed_num.getText().toString(),ed_name.getText().toString(),ed_ala.getText().
toString());
//pada method addData() diatas saya menambahkan sebuah parameter yang akan 
//mengambil nilai dari variabel ed_ala menggunakan method getText()
view();}
 public void but_DelClick(View v)
{
SQLiteDatabase db = dbHelper.getWritableDatabase();
 try{
if(id!=-1){
db.execSQL("delete from "+ MySQLHelper.TABLE +" where number='" + ed_num.getText() 
.toString()+ "'");
view();}}
catch(Exception e){
ed_num.setText(e.toString());}}
public void but_EditClick(View v)
{
SQLiteDatabase db = dbHelper.getWritableDatabase();
try{
if(id!=-1)
{
db.execSQL("update data set number='"+ed_num.getText().toString()+"' ,name='"+ 
ed_name.getText().toString()+"',alamat='"+ed_ala.getText().toString()+"' 
where _id="+id);
//pada perintah query update diatas saya menambahkan sebuah parameter dengan nama
// alamat dimana parameter tersebut mengambil nilai pada variabel ed_ala 
//menggunakan method getText() dimana penambahan variabel ini berfungsi untuk 
//mengedit data alamat
view();}}
catch(Exception e){
ed_num.setText(e.toString());}}
private void view(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
try{
cursor = db.rawQuery("SELECT * FROM dataku",null);
adapter = new SimpleCursorAdapter(this,R.layout.view2,cursor,
 new String[] {"number","name","alamat"},
 //pada array diiatas saya menambahkan sebuah indeks dengan nama alamat dimana 
//alamat merupakan id dari layout yang telah kita buat dengan nama view2                    

 new int[] {R.id.number,R.id.name,R.id.alamat});
numberList.setAdapter(adapter);}
catch(Exception e){
 ed_num.setText(e.toString());}}
 
3. Merubah scribt pada kelas MySQLHelper.java
public class MySQLHelper  extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database4.db";
//pada scribt diatas saya merubah nama database dengan nama database 
//baru yaitu “database4.db” sehingga data yang kita inputkan nanti akan 
//ditampung oleh database baru ini.
private static final int DATABASE_VERSION = 1;
public static final String TABLE = "dataku ";
public static final String number = "number";
public static final String name = "name";
public static final String alamat = "alamat";
//pada scribt diatas saya menambahkan sebuah variabel dengan nama alamat dimana 
//variabel ini berisi id alamat pada layout view2.xml
 public MySQLHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);}
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "( _id"+ " integer primary key 
autoincrement, " + number + " text not null, "+ name + " text not null," +
 alamat +" text not null);";
//pada perintah query diatas saya menambahkan sebuah variabel dengan nama 
//alamat sehingga nantinya pada pembuatan tabel oleh perintah query diatas akan 
//ditambahkan sebuah field dengan nama alamat.
Log.d("dataku", "onCreate: " + sql);
db.execSQL(sql);}

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
HASIL :

pada artikel selanjutnya saya akan membahas sebuah aplikasi dimana aplikasi ini akan berguna untuk menginputkan data barang electronik yang antinya data tersebut akan ditampung kedalam sebuah database SQLite.

0 Response to "Aplikasi dengan Database (SQLite) menggunakan android studio"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel