Minggu, 29 Desember 2013

MEMBUAT DATABASE SQLite DALAM ANDROID



Nama  : Ogy Chrisna W
Kelas   : SI 12C
NIM    : 12.12.0198




MEMBUAT DATABASE  SQLite  DALAM ANDROID


Membuat Database dalam Android
Pertama kita buat project baru terlebih dahulu dengan menggunakan cara file =>  new , pilih android aplication project dan beri nama project :

 



 Pada configuration launcher icon kita bisa pilih icon untuk aplikasi yang kita buat, lalu next

 Setelah dinext sampai pada konfigurasi activity untuk aplikasi kita, lalu klik finish

lalu pada tampilan awal akan muncul layout default apliaksi dengan layout default seperti dibawah 
Setelah itu kita buat class baru dengan nama DBHelper dengan cara memilih package dari aplikasi kita lalu klik kanan => new  pilih class lalu  beri nama class tersebut dengan nama DBHelper


Lalu ketikan koding berikut :
package example.androidrindi;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
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 = "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 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);
  // TODO Auto-generated constructor stub
 }
 //mengeksekusi perintah SQL di atas untuk membuat tabel database baru
 @Override
 public void onCreate(SQLiteDatabase db) {
  // TODO Auto-generated method stub
  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);
   }
}
Lalu kita buat class baru lagi dengan cara seperti diatas dan beri nama class tersebut dengan nama Barang
package example.androidrindi;
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 "+ nama_barang +" "+ merk_barang + " "+ harga_barang;
     }
}
Lalu buat class lagi dengan nama DBDataSource dengan sintak berikut :
package example.androidrindi;
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 {
      //inisialiasi SQLite Database
            private SQLiteDatabase database;
            //inisialisasi kelas DBHelper
            private DBHelper dbHelper;
            //ambil semua nama kolom
            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/membuat sambungan baru ke database
            public void open() throws SQLException
            {
                  database = dbHelper.getWritableDatabase();
            }
           
            //menutup sambungan ke database
            public void close()
            {
                  dbHelper.close();
            }
           
            //method untuk create/insert barang ke database
           
            public Barang createBarang(String nama, String merk, String harga) {
                  // membuat sebuah ContentValues, yang 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
                  // yang akan mengembalikan sebuah insert ID
                 
                  long insertId = database.insert(DBHelper.TABLE_NAME, null,values);
                 
                  // setelah data dimasukkan, memanggil
                  // perintah SQL Select menggunakan Cursor untuk
                  // melihat apakah data tadi benar2 sudah masuk
                  // dengan menyesuaikan ID = insertID
                 
                  Cursor cursor = database.query(DBHelper.TABLE_NAME,
                              allColumns, DBHelper.COLUMN_ID + " = " + insertId, null,
                              null, null, null);
                 
                  // pindah ke data paling pertama
                 
                  cursor.moveToFirst();
                 
                  // mengubah objek pada kursor pertama tadi
                  // ke dalam objek barang
                 
                  Barang newBarang = cursorToBarang(cursor);
                 
                  // close cursor
                 
                  cursor.close();
                 
                  // mengembalikan barang baru
                 
                  return newBarang;
                  }
            private Barang cursorToBarang(Cursor cursor) {
           
            // buat objek barang baru
           
            Barang barang = new Barang();
           
            // debug LOGCAT
           
            Log.v("info", "The getLONG "+cursor.getLong(0));
            Log.v("info", "The setLatLng "+cursor.getString(1)+
                        ","+cursor.getString(2));
           
            /* Set atribut pada objek barang dengan
             * * data kursor yang diambil dari database*/
           
            barang.setId(cursor.getLong(0));
            barang.setNama_barang(cursor.getString(1));
            barang.setMerk_barang(cursor.getString(2));
            barang.setHarga_barang(cursor.getString(3));
            //kembalikan sebagai objek barang
            return barang;
            }
            //mengambil semua data barang
            public ArrayList<Barang> getAllBarang() {
                  ArrayList<Barang> daftarBarang = new ArrayList<Barang>();
                  // select all SQL query
                 
                  Cursor cursor = database.query(DBHelper.TABLE_NAME,
                              allColumns, null, null, null, null, null);
                 
            // pindah ke data paling pertama
                  cursor.moveToFirst();
                 
            // jika masih ada data, masukkan data barang ke
            // daftar barang
                 
                 
            while (!cursor.isAfterLast()) {
                  Barang barang = cursorToBarang(cursor);
                  daftarBarang.add(barang);
                  cursor.moveToNext();
                  }
           
            // Make sure to close the cursor
            cursor.close();
            return daftarBarang;
            }
      }
Setelah itu kita buat file xml baru dengan cara klik pada prroject kita, lalu klik kanan => new  pilih android xml file lalu beri nama create data lalu ketikan koding berikut :
<?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>
Setelah itu kita buat class baru lagi dengan nama CreateData dengan sintak berikut :
package example.androidrindi;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CreateData extends Activity implements OnClickListener {
      // inisilisasi elemen-elemen pada layout
      private Button buttonSubmit;
      private EditText edNama;
      private EditText edMerk;
      private EditText edHarga;
      // inisialisasi kontroller/Data Source
      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((android.view.View.OnClickListener) this);
            edNama = (EditText) findViewById(R.id.nama_barang);
            edHarga = (EditText) findViewById(R.id.harga_barang);
            edMerk = (EditText) findViewById(R.id.merk_barang);
            // instanstiasi kelas DBDataSource
            dataSource = new DBDataSource(this);
            // membuat sambungan baru ke database
            dataSource.open();
      }
      public void onClick(View v) {
            // TODO Auto-generated method stub
            // Inisialisasi data barang
            String nama = null;
            String merk = null;
            String harga = null;
            @SuppressWarnings("unused")
            // inisialisasi barang baru (masih kosong)
            Barang barang = null;
            if (edNama.getText() != null && edMerk.getText() != null
                        && edHarga.getText() != null) {
                  /*
                   * jika field nama, merk, dan harga tidak kosong maka masukkan ke
                   * dalam data barang
                   */
                  nama = edNama.getText().toString();
                  merk = edMerk.getText().toString();
                  harga = edHarga.getText().toString();
            }
            switch (v.getId()) {
            case R.id.buttom_submit:
                  // insert data barang baru
                  barang = dataSource.createBarang(nama, merk, harga);
                  // konfirmasi kesuksesan
                  Toast.makeText(
                              this,
                              "masuk Barang\n" + "nama\n" + barang.getNama_barang()
                                          + "merk\n" + barang.getMerk_barang() + "harga\n"
                                          + barang.getHarga_barang(), Toast.LENGTH_LONG)
                              .show();
                  break;
            }
      }
      @Override
      public void onClick(DialogInterface arg0, int arg1) {
            // TODO Auto-generated method stub
      }
}
Etelah itu kita buat xml baru dengan nama viewdata lalu ketkan koding berikut :
<?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 itu kita buat class lagi dengan nama  ViewData dengan sintak berikut :
package example.androidrindi;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class ViewData extends ListActivity {
      // inisialisasi kontroller
      private DBDataSource dataSource;
      // inisialisasi arraylist
      private ArrayList<Barang> values;
      // menampilkan data
      @Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.viewdata);
            dataSource = new DBDataSource(this);
            // buka kontroller
            dataSource.open();
            // ambil semua data barang
            values = dataSource.getAllBarang();
            // masukkan data barang ke array adapter
            ArrayAdapter<Barang> adapter = new ArrayAdapter<Barang>(this,
                        android.R.layout.simple_list_item_1, values);
            // set adapter pada list
            setListAdapter(adapter);
      }
}
Lalu kita buat class baru dengan nama ViewData lalu ketikan koding berikut :
package example.androidrindi;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class ViewData extends ListActivity {
      // inisialisasi kontroller
      private DBDataSource dataSource;
      // inisialisasi arraylist
      private ArrayList<Barang> values;
      // menampilkan data
      @Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.viewdata);
            dataSource = new DBDataSource(this);
            // buka kontroller
            dataSource.open();
            // ambil semua data barang
            values = dataSource.getAllBarang();
            // masukkan data barang ke array adapter
            ArrayAdapter<Barang> adapter = new ArrayAdapter<Barang>(this,
                        android.R.layout.simple_list_item_1, values);
            // set adapter pada list
            setListAdapter(adapter);
      }
}
Lalu kita buat class dan xl dengan nama Menu lalu ketikan kodingnya :
Xml Menu :
<?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:textSize="20sp"
        android:text="@string/nama_app"
        />
    <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_view"
        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>
Class Menu :
package example.androidrindi;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
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((android.view.View.OnClickListener) this);
          bLihat = (Button) findViewById(R.id.button_view);
          bLihat.setOnClickListener((android.view.View.OnClickListener) this);
    }
      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_view :
                  Intent i2 = new Intent(this, ViewData.class);
                  startActivity(i2);
                  break;
        }
      }
      @Override
      public void onClick(DialogInterface arg0, int arg1) {
            // TODO Auto-generated method stub
           
      }
}
Lalu saat kita running projectnya :


Pada saat kita menekan tombol tambah maka akan muncul tampilan untuk menambahkan data barang  seperti berikut :