Sabtu, 28 Desember 2013

DATABASE ANDROID



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;
        }
    }
}

Setelah menulis kode program di atas. Buatlah satu file xml dengan nama createdata.xml di folder layout. Ketikan program berikut sehingga tampilannya akan seperti gambar di bawah ini.


<?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;
        }
            }
}

Setelah kita menulis program di atas, selanjutnya kita akan membuat tampilanya. Caranya, buat file xml baru di folder layout, beri nama menu.xml. Ketikan program berikut sehingga tampilannya akan seperti gambar di bawah ini.


<?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);
    }

}

Setelah kita menulis progam di atas, selanjutnya kita akan membuat file xml yang akan menampilkan data kita. Buat file xml di folder layout dan berinama viewdata.xml dan ketikan progam berikut sehingga tampilannya akan seperti gambar di bawah ini .


<?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.

<?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 sudah selesai silahkan jalankan aplikasinya pada emulator Anda, saat pertama dijalankan akan menampilkan layout menu.xml seperti gambar berikut.


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