Cara Menggunakan Database Sugar ORM di Android

Dalam pemrograman web kita bisa gunakan MySql, kita cukup menuliskan Querynya saja agar bisa memanggil apa yang kita mau. Nah hampir sama dengan mobile android, database android yang digunakan untuk penyimpanan local adalah SQLite.

Dewasa ini sudah banyak bertebaran library-library yang mempermudah kita dalam melakukan operasi ke database android SQLite.

Baca juga : Cara menyimpan data di sharedPreference dan Intent Android

Kalau kita menggunakan cara penyimpanan manual ke SqlLite, saya merasakannya cukup ribet, jadi untuk yang baru belajar mungkin akan kesulitan mengertinya. Untuk mengatasi hal tersebut, ada sebuah library yang dapat membantu kita menyimpan data di database mobile yaitu menggunakan ORM Sugar [Official Site nya], jika diperhatikan dengan baik, library ini sangat memudahkan kita dalam proses penyimpanan data, hapus data dan update.

Tapi ingat, dari beberapa sumber yang saya baca, ORM Sugar ini masih digunakan untuk Database-database yang sederhana

Pertama yang harus dilakukan adalah meng compile library ORM Sugar di build.gradle (app) :

compile 'com.github.satyan:sugar:1.4'

Buat Application.java yang meng extends SugarApp, seperti dibawah ini :

package com.example.putuguna.databasesugar;

import com.orm.SugarApp;

/**
 * Created by putuguna on 27/06/16.
 */
public class Application extends SugarApp {

    @Override
    public void onCreate() {
        super.onCreate();
    }
}

Kemudian setting AndroidManifest.xml kalian, tambahkan beberapa meta-tag di dalam Applikasi dan berikan nama pada Application. Nama Application nya adalah class aplication yang sudah dibuat :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.putuguna.databasesugar">

    <application
        android:name=".Application"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data android:name="DATABASE" android:value="putugunacompo.db"/>
        <meta-data android:name="VERSION" android:value="8"/>
        <meta-data android:name="QUERY_LOG" android:value="true"/>
        <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example.putuguna.databasesugar"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ada beberapa meta-data didalam manifest, kalian harus paham satu per satu

  1. DATABASE = sudah jelas nama Database yang kalian akan gunakan, format.db
  2. VERSION = pada awal kalian membuat database isikan angka 1, tapi ketika kalian sempat merubah komponen-komponennya seperti nama database, table database, field, kalian HARUS menaikan versinya menjadi 2, begitu seterusnya
  3. QUERY_LOG = bisa diset true atau false, ini digunakan untuk proses dibugging query pada aplikasi
  4. DOMAIN_PACKAGE_NAME = Isikan nama package kalian.

Selanjutnya, buat java class yang meng extends SugarRecord yang akan kita gunakan sebagai Table, beri nama Dataprofile.java

package com.example.putuguna.databasesugar;

import com.orm.SugarRecord;

/**
 * Created by putuguna on 27/06/16.
 */
public class Dataprofile extends SugarRecord {

    private String owner;
    private String profession;

    public Dataprofile(String owner, String profession) {
        this.owner = owner;
        this.profession = profession;
    }

    public Dataprofile() {
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public String getProfession() {
        return profession;
    }

    public void setProfession(String profession) {
        this.profession = profession;
    }
}

Ingat lagi, ketika kalian nantinya merubah apapun di file java ini (Dataprofile.java), VERSION databasenya harus kalian naikan juga.

Sebelum masuk ke MainActivity.java terlebih dahulu kita siapkan layoutnya. Disini saya beri mana activity_main.xml, kodingannya begini :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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"
    android:orientation="vertical"
    tools:context="com.example.putuguna.databasesugar.MainActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/owner"
        android:hint="owner"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/profession"
        android:hint="Profession"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Save Data"
        android:id="@+id/save"/>

    <ListView
        android:layout_marginTop="10dp"
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>

Terakhir kita buat MainActivity.java. Untuk menyimpan data cukup kita gunakan dataprofile.save()

package com.example.putuguna.databasesugar;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.orm.SugarRecord;

import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private EditText mOwner;
    private EditText mProfession;
    private Button mButtonSave;
    private ArrayAdapter<Dataprofile> mAdapter;
    private ListView mListview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mOwner = (EditText) findViewById(R.id.owner);
        mProfession = (EditText)  findViewById(R.id.profession);
        mButtonSave = (Button) findViewById(R.id.save);
        mListview = (ListView) findViewById(R.id.listview);

        mButtonSave.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        if(id==R.id.save){

            String owner = mOwner.getText().toString();
            String profession = mProfession.getText().toString();

            Dataprofile dataProfleOwner = new Dataprofile(owner, profession);
            dataProfleOwner.save();

            List<Dataprofile> allData = SugarRecord.listAll(Dataprofile.class);
            mAdapter = new ArrayAdapter<Dataprofile>(MainActivity.this, android.R.layout.simple_list_item_1,allData);
            mAdapter.notifyDataSetChanged();
            mListview.setAdapter(mAdapter);

            Toast.makeText(this, "Data berhasil disimpan", Toast.LENGTH_LONG).show();
        }
    }
}

Berikut ini adalah beberapa operasi yang dapat dilakukan ORM Sugar :

Delete

Untuk Delete semua data dalam dalam table, gunakan perintah berikut :

 SugarRecord.deleteAll(Dataprofile.class);

Untuk delete data berdasarkan clause tertentu, kalian bisa gunakan seperti ini

Dataprofile.deleteAll(Dataprofile.class,"owner = ?", "Putu Guna");

Kode diatas, akan mendelete semua data yang memiliki owner Putu Guna

Atau bisa juga seperti ini caranya untuk mendelete berdasarkan ID (ID hasil auto increment) :

Dataprofile profile = Dataprofile.findById(Dataprofile.class, 23L);
            profile.delete();

 

Display (Menampilkan Data)

Untuk menampilkan data berdasarkan ID (ID ini tercipta berdasarkan Auto Increment di database) :

Dataprofile findById = SugarRecord.findById(Dataprofile.class, (long)1);

Kode diatas maksudnya, kita akan menampilkan field-filed yang mempunyai ID 1

Untuk menampilkan data berdasarkan clause tertentu (misalnya berdasarkan nama, pekerjaan atau lainnya), bisa gunakan seperti ini :

List<Dataprofile> findWithArguments = SugarRecord.find(Dataprofile.class, "owner = ?", "Putu Guna");

Atau ,

List<Dataprofile> findWithCustomQuery = SugarRecord.findWithQuery(Dataprofile.class, "SELECT * FROM Dataprofile WHERE owner = ?", "Putu Joli Artaguna");

Atau,

List<Dataprofile> findWIthQueryBuilder = Select.from(Dataprofile.class).where(Condition.prop("owner").eq("Putu Guna")).list();

 

Update Data

Untuk memperbaharui data berdasarkan ID, gunakan berikut ini :

Dataprofile dataprofile = Dataprofile.findById(Dataprofile.class, 1);
            dataprofile.setOwner("update nama owner si ID 1 disini");
            dataprofile.setProfession("update data profession si ID 1 disini");
            dataprofile.save();

Ok sekian dari tutorial cara menyimpan data di database android dengan menggunakan ORM Sugar.Happy coding!! have fun!!

PERHATIAN :

Jika kalian menemui beberapa pesan error, lakukan beberapa hal berikut :

no such table, cara mengatasinya (dari beberapa referensi yang saya baca) begini :

  1. disable instant run > tidak ngefek ke saya, tapi kalian silakan coba, siapa tau berhasil
  2. remove TAG meta-data utk DOMAIN_PACKAGE_NAME atau SEMUA tag meta-data di Manifest > tidak ngefek ke saya, tapi kalian silakan coba, siapa tau berhasil
  3. Invalidate caches dan Clean and Build project> tidak ngefek ke saya, tapi kalian boleh coba siapa tau berhasil
  4. Naikan VERSION databasenya di Manifest > cara ini berhasil ke saya, kenapa? karena saya beberapa kali memodifikasi Table nya (Dataprofile.java) tapi saya lupa menaikan VERSION databasenya

Can’t downgrade database from x to x 

  1. Itu artinya kalian kelebihan dalam menaikan versi databasenya, silakan kurangi satu-demi satu

AddLikelySubtags

  1. Kalian lupa mengisi nama domain package nya dengan benar, silakan cek di meta-data AndroidManifest.xml

Referensi :
https://github.com/satyan/sugar
http://satyan.github.io/sugar/index.html
https://guides.codepath.com/android/Clean-Persistence-with-Sugar-ORM



Baca juga :


About The Author

Related Posts

Add Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Berlangganan Artikel

Untuk mendaftarkan tutorial pemrograman terbaru dari putuguna[dot]com, silakan tuliskan email kalian dibawah ini