Friday, January 24, 2014

Android Database SQLite Tutorial (II) : Membuat Fungsi Tambah Data (Input Data)

Ini merupakan tutorial lanjutan dari seri tutorial android sebelumnya (lihat postingan sebelum ini). Jadi kita akan tetap bekerja pada project yang sudah kita buat sebelumnya.

Okeh langsung saja ke step-stepnya:

1. Buat Activity baru dengan nama “TambahData” (tanpa tanda petik) dan layout “tambahdata”. *Silahkan sesuaikan sendiri jika ingin memberi nama sendiri.

2. Selanjutnya kita akan mengatur tampilan layoutnya. Buka folder res/layout pada project kalian dan buka file “tambahdata.xml”. Isikan kode berikut:
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/bgnaruto"
    tools:context=".TambahData" >

 <TextView
     android:id="@+id/tvtdjudul"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:layout_marginTop="10dp"
     android:textStyle="bold"
     android:text="@string/txttdjudul" />
<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp">
  
    <TextView
        android:id="@+id/tvnama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="25dp"
        android:text="@string/txtnama" />

    <EditText android:id="@+id/nama"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        />
</LinearLayout>
    <LinearLayout android:id="@+id/LinearLayout02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/tvalamat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="20dp"
        android:text="@string/txtalamat" />

    <EditText android:id="@+id/alamat"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        />
</LinearLayout>

    <LinearLayout android:id="@+id/LinearLayout03"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="68dp"
    android:layout_marginTop="10dp"
    android:orientation="horizontal">
    <Button
        android:id="@+id/btnsimpan"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:text="@string/btnsimpan" />
    <Button
        android:id="@+id/btnreset"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:text="@string/tombol_cancel" />
</LinearLayout>
</LinearLayout>


3. Buka “strings.xml” dan tambahkan script berikut:
    <string name="txttdjudul">TAMBAH DATA MAHASISWA</string>  <string name="txtnama">Nama</string>
 <string name="txtalamat">Alamat</string>
 <string name="btnsimpan">Simpan</string>
4. Kemudian kita akan menghubungkan activity TambahData ke MainMenu supaya jika menu tambah data diklik akan tampil activity TambahData. Buka MainMenu.java dan ganti scriptnya menjadi seperti berikut:
package com.aina.dblatihan;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;

public class MainMenu extends Activity implements OnClickListener{
    private Button btnTambah,btnLihat,btnCari;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu);
        btnTambah = (Button) findViewById(R.id.btntambah);
        btnTambah.setOnClickListener(this);
       
        btnLihat = (Button) findViewById(R.id.btnlihat);
        btnLihat.setOnClickListener(this);
       
        btnCari = (Button) findViewById(R.id.btncari);
        btnCari.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.btntambah :
                Intent td = new Intent(this, TambahData.class);
                startActivity(td);
                break;
        }
    }
}

5. Selanjutnya kita perlu membuat kelas controller untuk menangani database. Buat kelas “DBDataSource.java” (tanpa tanda petik). Berikut ini kodenya:
 package com.aina.dblatihan;

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;

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_NAMA, DBHelper.COLUMN_ALAMAT};

    //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 Mahasiswa createMahasiswa(String nama, String alamat) {

        // membuat sebuah ContentValues, yang berfungsi
        // untuk memasangkan data dengan nama-nama
        // kolom pada database
        ContentValues values = new ContentValues();
        values.put(DBHelper.COLUMN_NAMA, nama);
        values.put(DBHelper.COLUMN_ALAMAT, alamat);

        // 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 mhs
        Mahasiswa newMhs = cursorToMahasiswa(cursor);

        // close cursor
        cursor.close();

        // mengembalikan barang baru
        return newMhs;
      }

    private Mahasiswa cursorToMahasiswa(Cursor cursor)
    {
        // buat objek mhs baru
        Mahasiswa mhs = new Mahasiswa();
        // 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 mhs dengan
         * data kursor yang diambil dari database*/
        mhs.setId(cursor.getLong(0));
        mhs.setNama(cursor.getString(1));
        mhs.setAlamat(cursor.getString(2));
        //kembalikan sebagai objek mhs
        return mhs;
    }
}

6. Buka TambahData.java lalu sesuaikan scriptnya menjadi seperti berikut:
package com.aina.dblatihan;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class TambahData extends Activity implements OnClickListener{
    //inisilisasi elemen-elemen pada layout
    private Button btnSimpan,btnReset;
    private EditText etNama;
    private EditText etAlamat;
    //inisialisasi kontroller/Data Source
    private DBDataSource dataSource;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tambahdata);
       
        btnSimpan = (Button) findViewById(R.id.btnsimpan);
        btnSimpan.setOnClickListener(this);
        btnReset = (Button) findViewById(R.id.btnreset);
        btnReset.setOnClickListener(this);
        etNama = (EditText) findViewById(R.id.nama);
        etAlamat = (EditText) findViewById(R.id.alamat);
        etNama.requestFocus();
        // instanstiasi kelas DBDataSource
        dataSource = new DBDataSource(this);

        //membuat sambungan baru ke database
        dataSource.open();
    }
    //KETIKA Tombol Submit Diklik
    @Override
    public void onClick(View v) {
       // Inisialisasi data mhs
        String nama = null;
        String alamat = null;
        //inisialisasi mhs baru (masih kosong)
        Mahasiswa mahasiswa= null;
     
        if(etNama.getText()!=null && etAlamat.getText()!=null)
        {
            /* jika field nama dan alamat tidak kosong
             * maka masukkan ke dalam data mhs*/
          nama = etNama.getText().toString();
          alamat = etAlamat.getText().toString();
        }

        switch(v.getId())
        {
            case R.id.btnsimpan:
                // insert data mhs baru
                mahasiswa = dataSource.createMahasiswa(nama, alamat);

                //tampilkan toast (pemberitahuan) jika berhasil disimpan
                Toast.makeText(this, "Data Mahasiswa Berhasil ditambahkan\n" +
                        "Nama    :" + mahasiswa.getNama() + "\n"+
                        "Alamat :" + mahasiswa.getAlamat() , Toast.LENGTH_LONG).show();
                etNama.setText("");
                etAlamat.setText("");
                etNama.requestFocus();
                break;
            case R.id.btnreset:
                etNama.setText("");
                etAlamat.setText("");
                etNama.requestFocus();
                break;
        }

    }
     @Override
        public void onBackPressed() {
         finish();
         dataSource.close();
        }
}
7. Jalankan Aplikasi. Jika berhasil akan tampil seperti berikut ini:
memasukkan data mahasiswa
 
toast (pemberitahuan) keberhasilan input data mahasiswa

Fin.
Happy Coding.
Alhamdulillah.
:)


Jum'at, 24 Januari 2014
21:01

No comments:

Post a Comment