Tuesday, February 28, 2017

# Android Studio # Tutorial

[Tutorial] Membuat Aplikasi Dengan Menggunakan CRUD SQLite


Membuat Aplikasi Dengan Menggunakan CRUD SQLite

Assalamualaikum Guys... Kembali lagi bersama gw Ramadhany si programer ganteng.... nah guys... Sekarang ane mau berbagi ilmu tentang membuat aplikasi dengan menggunakan CRUD SQLite.... Ayo ikuti langkah-langkahnya....

A. Pengertian SQLite

SQLite itu merupakan sebuah Database yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp. SQLite adalah sebuah open source database yang telah ada cukup lama, cukup stabil, dan sangat terkenal pada perangkat kecil, termasuk Android. Android menyediakan database relasional yang ringan untuk setiap aplikasi menggunakan SQLite. Aplikasi dapat mengambil keuntungan dari itu untuk mengatur relational database engine untuk menyimpan data secara aman dan efiesien. 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.

Berikut adalah langkah-langkah untuk pembuatan aplikasi sqlite database  :

B. Pembuatan Project

Terlebih dahulu buatlah sebuah project pada android studio misalnya dengan nama Database SQLite 

Pilih Next, kemudian muncul pilihan minimum sdk target pembuatan aplikasi. Setelah itu Next 


Pilih Next, kemudian muncul pilihan seperti di bawah ini :


Pada Add an Activity to Mobile, pilih Basic Activity. Setelah itu pilih Next.


Pada Costumize the Activity, pilih Finish. Tunggu beberapa saat hingga proses pembuatan proect tersebut selesai.

B. Design Layout

Setelah proses pembuatan project selesai. Langkah selanjutnya adalah pembuatan layout pada file content_main.xml. Tambahkan satu buah List View 


Tampilan widget pada layout content_main.xml

Tampilan design layout content_main.xml


Kode text pada layout content_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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: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.example.rara.crudsqlite.MainActivity"    tools:showIn="@layout/activity_main">

    <ListView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/LvBarang"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:padding="16dp" />
</RelativeLayout>


C. Logika Kode

Pertama kita lihat di class MainActivity.java. kita akan kenalkan widget ListView, inisialiasi kontroller dan inisialisasi array listnya. Tambahkan code seperti di bawah ini

1. MainActivity.java

public class MainActivity extends AppCompatActivity {
    //inisialisasi kontroller    private DBFunction dbFunction;
    //inisialisasi arraylist    private ArrayList<MBarang> data;
    ListView lvBarang;
    @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() {
            @Override            public void onClick(View view) {
                startActivity(new Intent(getApplicationContext(),
                        AddBarang.class));
            }
        });
        lvBarang = (ListView)findViewById(R.id.LvBarang) ;
        dbFunction = new DBFunction(this);
        // buka kontroller        dbFunction.open();

        // ambil semua data barang        data = dbFunction.getAllBarang();

        // masukkan data barang ke array adapter        ArrayAdapter<MBarang> adapter = new ArrayAdapter<MBarang>(this,
                android.R.layout.simple_list_item_1, data);
        lvBarang.setAdapter(adapter);
        // event ketika item list view di click        lvBarang.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override            public void onItemClick(AdapterView<?> parent, 
        View view, int position, long id) {
                MBarang b = data.get(position);
                Intent a = new Intent(getApplicationContext(), 
        EditDeleteActivity.class);
                a.putExtra("nama_barang", b.getNama_barang());
                a.putExtra("jumlah_barang", b.getJumlah_barang());
                a.putExtra("harga_barang", b.getHarga_barang());
                a.putExtra("id_barang", b.getId_barang());
                startActivity(a);
            }
        });
    }

    @Override    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if 
           it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();

        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    @Override    protected void onResume() {
        dbFunction.open();
        super.onResume();
    }

    @Override    protected void onPause() {
        dbFunction.close();
        super.onPause();
    }
}


Setelah itu kita membuat class java, beri nama kelasnya yaitu MSiswa. Dan ini kode class MBarang.java

2. MBarang.java

public class MBarang {
    private long id_barang;
    private String nama_barang, jumlah_barang, harga_barang;

    @Override    public String toString() {
        return "Barang : "+nama_barang+"\nJumlah : "+jumlah_barang+"
        \nHarga : "+harga_barang;
    }

    public long getId_barang() {
        return id_barang;
    }

    public void setId_barang(long id_barang) {
        this.id_barang = id_barang;
    }

    public String getNama_barang() {
        return nama_barang;
    }

    public void setNama_barang(String nama_barang) {
        this.nama_barang = nama_barang;
    }

    public String getJumlah_barang() {
        return jumlah_barang;
    }

    public void setJumlah_barang(String jumlah_barang) {
        this.jumlah_barang = jumlah_barang;
    }

    public String getHarga_barang() {
        return harga_barang;
    }

    public void setHarga_barang(String harga_barang) {
        this.harga_barang = harga_barang;
    }
}



Setelah itu muat class java lagi yaitu DBHelper. Fungsi dari class DBHelper ini adalah 
konfogurasi nama database table dan filter databasenya. Contoh kode lengkap dari class 
DBHelper.

3. DBHelper.java

public class DBHelper extends SQLiteOpenHelper {
    //deklarasi table, kolom dan nama database yang akan kita gunakan.    //nama tabel    public static String TABLE_NAME="tb_barang";
    //nama database    public static String DB_NAME="inventori.db";
    //kolum    public static final String FIELDS_NAMA="nama_barang";
    public static final String FIELDS_ID="id_barang";
    public static final String FIELDS_JUMLAH="jumlah_barang";
    public static final String FIELDS_HARGA="harga_barang";
    public static final int db_version=1;

    //buat perinntah untuk create table tb_barang    private static String tb_create= "create table "+TABLE_NAME+"("            +FIELDS_ID+" integer primary key autoincrement, "+
            FIELDS_NAMA+" varchar(50) not null, " +
            FIELDS_JUMLAH+" varchar(50) not null, "            +FIELDS_HARGA+ " varchar(50) not null);";


    //create table tb_barang (id_barang integer primary key 
      autoincrement, nama_barang varchar(50) not null dst)    public DBHelper(Context context) {
        super(context, DB_NAME, null, db_version);
    }

    //mengeksekusi perintah sql yang sudah kita buat    @Override    public void onCreate(SQLiteDatabase db) {
        db.execSQL(tb_create);
    }

    //upgrade database    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }
    //class java yang berfungsi untuk setting database yang 
      Ekstend ke SQLiteOpenHeler
}


Kemudian buatlah class java baru lagi yaitu DBFunction.java. Fungsi dari class ini adalah class untuk menampung fungsi rumus database. Dibawah ini adalah code lengkap class DBFunction.java

4. DBFunction.java

public class DBFunction {
    private SQLiteDatabase database;
    private DBHelper dbHelper;
    //mengenalkan semua kolom yang ada pda table barang    private String[] kolom={
            DBHelper.FIELDS_ID, DBHelper.FIELDS_NAMA, DBHelper.FIELDS_JUMLAH,
            DBHelper.FIELDS_HARGA    };

    //buat constructor dari DBFunction    public DBFunction(Context context) {
        dbHelper =  new DBHelper(context);
    }
    //buka koneksei ke sqlite    public void open() throws SQLiteException{
        database =  dbHelper.getWritableDatabase();
    }
    //tuyup koneksi ke database sqlite    public void close(){
        dbHelper.close();

    }

    //funvtion / methode untk tambah barang    public MBarang addBarang(String nama_barang, String jumlah_barang, 
           String harga_barang){
        ContentValues values =  new ContentValues();
        values.put(DBHelper.FIELDS_NAMA, nama_barang);
        values.put(DBHelper.FIELDS_HARGA, harga_barang);
        values.put(DBHelper.FIELDS_JUMLAH, jumlah_barang);

        long id = database.insert(DBHelper.TABLE_NAME, null, values);
        Cursor cursor = database.query(DBHelper.TABLE_NAME
        kolom, DBHelper.FIELDS_ID+
                "=" + id, null,null, null,null);
        cursor.moveToFirst();
        MBarang barang = cursorToBarang(cursor);
        cursor.close();
        return barang;
    }

    private MBarang cursorToBarang(Cursor cursor) {
        MBarang barang =  new MBarang();
        barang.setId_barang(cursor.getLong(0));
        barang.setNama_barang(cursor.getString(1));
        barang.setHarga_barang(cursor.getString(2));
        barang.setJumlah_barang(cursor.getString(3));
        return barang;
    }

    //function untuk mengambil semua data barang    public ArrayList<MBarang> getAllBarang(){
        ArrayList<MBarang> barang = new ArrayList<>();

        //query untuk menampilkan semua data barang        Cursor cursor = database.query(DBHelper.TABLE_NAME
        kolom, null,null,null,null,null);
        //kita pindahkan data ke data yang paling pertama        cursor.moveToFirst();

        //daftar barang        while (!cursor.isAfterLast()){
            MBarang modelBarang =  cursorToBarang(cursor);
            barang.add(modelBarang);
            cursor.moveToNext();
        }

        cursor.close();
        return  barang;
    }

    //function untuk menampilka data barang sesuai dengan ID    public MBarang getBarangByID(long id){
        //kenalkan data barang        MBarang barang = new MBarang();
        Cursor cursor = database.query(DBHelper.TABLE_NAME, kolom,
                "id_barang ="+ id, null,null,null,null);
        cursor.moveToFirst();
        barang = cursorToBarang(cursor);
        cursor.close();
        return barang;
    }
    //function untuk update barang    public void updateBarang(MBarang b){
        //ambil berdasarkan id        String filter = "id_barang="+ b.getId_barang();
        ContentValues values =  new ContentValues();
        //masukan data sesuuai dengan kolom        values.put(DBHelper.FIELDS_NAMA, b.getNama_barang());
        values.put(DBHelper.FIELDS_JUMLAH, b.getJumlah_barang());
        values.put(DBHelper.FIELDS_HARGA, b.getHarga_barang());
        //update query        database.update(DBHelper.TABLE_NAME, values, filter,null);
    }

    //function delete barang    public void deleteBarang(long id){
        String filter = "id_barang="+id;
        database.delete(DBHelper.TABLE_NAME, filter, null);
    }
}


Setelah itu buatlah activity baru untuk menambah data barang tersebut. Beri nama activity tersebut dengan AddBarang.java. Fungsi dari class ini adalah untuk menambahkan data barang yang ingin di tambah nanti

5.AddBarang.java

public class AddBarang extends AppCompatActivity {

    EditText EdNama, EdHarga, EdJumlah;
    Button BtnCheck, BtnReset;

    DBFunction dbFunction;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_barang);
        kenalin();
        dbFunction =  new DBFunction(this);
        try{
            dbFunction.open();
        }catch (SQLiteException e){

        }
        BtnReset.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                EdNama.setText("");
                EdHarga.setText("");
                EdJumlah.setText("");
            }
        });
        BtnCheck.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                String barang, jumlah, harga;
                barang = EdNama.getText().toString();
                jumlah = EdJumlah.getText().toString();
                harga = EdHarga.getText().toString();

                if (TextUtils.isEmpty(barang)){
                EdNama.setError("Nama barang tidak boleh kosong!!");
                EdNama.requestFocus();
                }else if (TextUtils.isEmpty(harga)){
                EdJumlah.setError("Jumlah barang tidak boleh kosong!!");
                EdJumlah.requestFocus();
                }else if (TextUtils.isEmpty(jumlah)){
                EdHarga.setError("Harga barang tidak boleh kosong!!");
                EdHarga.requestFocus();
                }else{
                    MBarang barang1 = dbFunction.addBarang
                                      (barang, harga,jumlah);
                    Toast.makeText(getApplicationContext(),
                            "Berhasil Di Tambah",Toast.LENGTH_LONG).show();
                    startActivity(new Intent(getApplicationContext(), 
                    MainActivity.class));
                    finish();
                }
            }
        });
    }

    private void kenalin() {
        EdNama = (EditText)findViewById(R.id.EdNama);
        EdJumlah = (EditText)findViewById(R.id.EdJumlah);
        EdHarga = (EditText)findViewById(R.id.EdHarga);
        BtnCheck = (Button)findViewById(R.id.BtnCheck);
        BtnReset = (Button)findViewById(R.id.BtnReset);
    }
}


Dan jangan lupa juga, di layout activity_add_barang.xml tambahkan 3 buah EdiText dengan id = EdNama, EdJumlah, EdHarga 2 buah Button dengan id = BtnCheck, BtnReset. Berikut adalah code lengkap pada layout activity_add_barang.xml 

<EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/EdNama"    android:hint="Masukan Nama Barang"    android:layout_alignParentTop="true"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_marginTop="50dp" />

<EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/EdJumlah"    android:hint="Masukan Jumlah Barang"    android:layout_below="@+id/EdNama"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_marginTop="10dp" />

<EditText    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/EdHarga"    android:hint="Masukan Jumlah Harga"    android:layout_below="@+id/EdJumlah"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_marginTop="10dp" />
<LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal"    android:layout_below="@+id/EdHarga"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true">
    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:id="@+id/BtnCheck"        android:text="Check"        android:background="#2941fa"        android:layout_margin="10dp" />
    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:text="Reset"        android:id="@+id/BtnReset"        android:background="#2941fa"        android:layout_margin="10dp" />
</LinearLayout>


Selanjutnya tambahkan 1 buah class baru, beri nama class tersebut adalah EditDeleteActivity.java, fungsi class ini adalah untuk mendelet dan mengedit data yang sudah di tambahkan di dalam list view tersebut. Class ini nantinya akan di jadikan sebuah activity. Dan kita akan memakai layout activity_add_barang.xml. Berikut contoh code dari EditDelete.java

6. EditDelete.Java

public class EditDeleteActivity extends AppCompatActivity {
    EditText EdNama, EdHarga, EdJumlah;
    Button BtnCheck, BtnReset;
    DBFunction dbFunction;
    String nmBarang, jmBarang, hrgBarang;
    long idBarang;
    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_barang);
        setEta();
        dbFunction = new DBFunction(this);
        try {
            dbFunction.open();
            // jika di php ini seperti include koneksi ke database        }catch (SQLiteException e){

        }
        // event ketika di edit        BtnCheck.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                String nama,harga,jumlah;
                nama = EdNama.getText().toString();
                harga = EdHarga.getText().toString();
                jumlah = EdJumlah.getText().toString();

                // cek data yang kosong dan jika kosong tampilkan pesan error                if (TextUtils.isEmpty(nama)){
                    EdNama.setError("Nama Barang Tidak Boleh Kosong!!!");
                    // kusor                    EdNama.requestFocus();
                }else if (TextUtils.isEmpty(jumlah)) {
                    EdJumlah.setError("Jumlah Barang Tidak Boleh Kosong!!!");
                    // kusor                    EdJumlah.requestFocus();
                }else if (TextUtils.isEmpty(harga)) {
                    EdHarga.setError("Harga Barang Tidak Boleh Kosong!!!");
                    // kusor                    EdHarga.requestFocus();
                }else {
                    // b = parameter                    MBarang b = new MBarang();
                    b.setId_barang(idBarang);
                    b.setNama_barang(nama);
                    b.setJumlah_barang(jumlah);
                    b.setHarga_barang(harga);
                    startActivity(new Intent(getApplicationContext(),
                    MainActivity.class));
                    finish();
                }
            }
        });
        BtnReset.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                dbFunction.deleteBarang(idBarang);
                Toast.makeText(getApplicationContext(), 
                EdNama.getText().toString()+ "" + " Berhasil Di Hapus!!",
                        Toast.LENGTH_LONG).show();
                startActivity(new Intent(getApplicationContext(), 
                MainActivity.class));
                finish();
            }
        });

    }

    private void setEta() {
        EdNama = (EditText)findViewById(R.id.EdNama);
        EdJumlah = (EditText)findViewById(R.id.EdJumlah);
        EdHarga = (EditText)findViewById(R.id.EdHarga);
        BtnCheck = (Button)findViewById(R.id.BtnCheck);
        BtnReset = (Button)findViewById(R.id.BtnReset);

        BtnCheck.setText("Simpan");
        BtnReset.setText("Hapus");

        // cara mengambil nilai put extra dari mainActivity        nmBarang = getIntent().getStringExtra("nama_barang");
        jmBarang = getIntent().getStringExtra("jumlah_barang");
        hrgBarang = getIntent().getStringExtra("harga_barang");
        idBarang = getIntent().getLongExtra("id_barang", 0);

        //set data tampilkan pada edittext        EdNama.setText(nmBarang);
        EdJumlah.setText(jmBarang);
        EdHarga.setText(hrgBarang);
    }
}

Jangan lupa !! kenalkan class EditDelete.java yang sudah di jadikan activity di AndroidManifest

<activity android:name=".EditDeleteActivity"></activity>

D. Menjalankan Aplikasi


Setelah selesai semuanya, langkah terakhir adalah menjalankan aplikasi tersebut yaitu dengan contoh di bawah ini


a. Tampilan Menu Utama

b. Tampilan Layout Tambah Data


c. Tampilan Data Yang Sudah Di Tambah


d. Tampilan Layout Untuk Hapus Data


e. Tampilan Data Yang Sudah Di Hapus



Sekian Ilmu Yang Saya Bagi Kepada Anda Semoga Mermanfaat Bagi Kita Semua. Jangan Lupa Beri Komentar Atau Masukan Ulasan Anda Untuk Blog Saya.. Terima Kasih  👌👌👍👍

Wassalamualaikum Warahmatulahhi Wabarakatuh




















2 comments:

  1. Halo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur

    ReplyDelete
  2. Halo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur

    ReplyDelete