Cara Membuat Aplikasi Android dengan Memanfaatkan SQLite Sebagai Media Penyimpanan

Membuat Aplikasi Android dengan Memanfaatkan SQLite Sebagai Media Penyimpanan



Android menyediakan salah satu mekanisme penyimpanan data berulang yang dapat tersimpan secara terstruktur dan berelasi dengan menggunakan SQLite.

SQLite hanya mendukung beberapa tipe data seperti text, int, real. Jadi apabila ingin menyimpan data yang tidak didukung oleh SQLite maka harus dilakukan proses konversi tipe data yang sesuai dengan tipe data yang didukung sebelum melakukan penyimpanan data. 


Menggunakan SQlite Database :

 Serbaguna dan mudah diterapkan
 Data terstruktur yang perlu Anda simpan secara terus menerus
 Akses, cari, dan ubah data sesering mungkin
 Penyimpanan utama untuk pengguna atau data aplikasi
 Cache dan sediakan data yang diambil dari
awan.
 Data dapat direpresentasikan sebagai baris dan kolom.

Menerapkan mesin database SQL :

 mandiri (tidak memerlukan komponen lain)
 tanpa server (tidak memerlukan server backend)
 konfigurasi nol (tidak perlu dikonfigurasi
untuk aplikasi Anda)
 transaksional (perubahan dalam satu transaksi di
SQLite terjadi sepenuhnya atau tidak sama sekali)

Implementasi SQLite :

Langsung saja kita praktikkan dengan Membuat Apliaksi Native android dengan memanfaatkan SQLite sebagai media penyimpanan :

1. Kode sumber : activity_main.xml

<? 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 : orientasi =" vertical " > <

    LinearLayout
       
android : layout_width = "match_parent"
       
android : layout_height = "
       

       
: gravitasi = "center"
       
android : orientasi = "horizontal"
       
android : weightSum = "1" > <

        EditText
           
android : id = "@ + id / edit_nama"
           
android : layout_width = "10dp"
           
android : layout_height = "wrap_content"
           
android : layout_weight = "0.5"
           
android : hint = "masukan nama"  
           
android : text = "" /> <

        EditText
           
android : id = "@ + id / edit_nim"
           
android : layout_width = "35dp"
           
android : layout_height = "wrap_content"
           
android : layout_weight = "0.3"
           
android : hint = "masukan nim"
           
android : text = "" /> <

        Tombol
           
android : id = "@ + id / btn_tambah"
           
android : layout_width = "5dp"
           
android : layout_height = "30dp"
           
android : layout_weight = "0.10"
           
android : background = "@ drawable / add"
           
android : text = "" / > </

    LinearLayout > <

    android.support.v7.widget.RecyclerView
       
android : id = "@ + id / recyclerview"
       
android : layout_width = "match_parent"
       
android : layout_height = "wrap_content"
       
android : layout_weight = "1"
       
alat : listitem = "@ layout / row_view "

</ android.support.v7.widget.RecyclerView >
</ LinearLayout >






2. Kode sumber: row_layout.xml

<? 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 = " wrap_content "
   
android : layout_margin =" 3dp "
   
android : orientasi =" horizontal " > <

    android.support.v7.widget.CardView

       
android : id = "@ + id / cv"
       
android : layout_width = "match_parent"
       


       
LinearLayout
           
android : layout_width = "match_parent"
           
android : layout_height = "wrap_content"
           
android : orientasi = "horizontal" > <

            ImageView
               
android : id = "@ + id / image"
                
android : layout_width = "90dp"
               
android : layout_height = "match_parent"
               
android : src = "@ drawable / nurul" > </
            ImageView > <

            LinearLayout
               
android : id = "@ + id / content"
               
android : layout_width = "wrap_content"
               
android : layout_height = "wrap_content"
               
android : layout_weight = "1"
               
android : orientasi = "vertical" > <



                EditText
                   
android : id = "@ + id / edit_nama"
                    
android : layout_width = "match_parent"
                   
android : layout_height = "wrap_content"
                   
android : gravity = "center_vertical"
                   
android : singleLine = "true"
                   
android : text = "Nama"
                    
android : textAppearance = "? android: textAppearanceMedium"
                   
android : textStyle = "bold" /> <


                EditText
                   
android : id = "@ + id / edit_nim"
                   
android : layout_width = "match_parent"
                   
android : layout_height = "wrap_content"
                   
android : singleLine = "true"
                   
android: text = "nim"
                   
android : textAppearance = "? Android: textAppearanceMedium"

                   
/> </
            LinearLayout > <

            Tombol
               
android : id = "@ + id / btn_update"
               
android : layout_width = "30dp"
               
android : layout_height = "28dp"
               
android: layout_marginLeft = "16dp"
               
android : background = "@ drawable / updated" /> <

            Tombol
               
android : id = "@ + id / btn_delete"
               
android : layout_width = "35dp"
               
android: layout_height = "28dp"
               
android : background = "@ drawable / delete" /> </

        LinearLayout > </
    android.support .v7.widget.CardView >
</ LinearLayout >




3. Kode sumber: MainActivity.java

paket com.app.nurul.sqlitemodul ;

impor android.os.Bundle ;
impor android.support.v7.app.AppCompatActivity ;
impor android.support.v7.widget.LinearLayoutManager ;
impor android.support.v7.widget.RecyclerView ;
impor android.view.View ;
impor android.widget.Button ;
impor android.widget.EditText ;

import com.app.nurul.sqlitemodul.dbHelper.MahasiswaHelper ;

import java.util.ArrayList ;
public class MainActivity meluas
AppCompatActivity {

    private RecyclerView recyclerView ;
    pribadi EditText nama , nim ;
    private Button tambah ;
    swasta MahasiswaAdapter mahasiswaAdapter ;
    swasta MahasiswaHelper mahasiswaHelper ;

    @Override
    void terlindungi onCreate ( Bundle storedInstanceState) {
        super .onCreate (storedInstanceState); setContentView (
        R . tata letak . activity_main );
       
recyclerView= (RecyclerView) findViewById(R.id.recyclerview);
       
nama = (EditText) findViewById(R.id.edit_nama);
       
nim = (EditText) findViewById(R.id.edit_nim);
       
tambah = (Button) findViewById(R.id.btn_tambah);


       
mahasiswaHelper = new MahasiswaHelper(this);
       
mahasiswaAdapter = MahasiswaAdapter baru ( ini );
       
recyclerView .setLayoutManager ( LinearLayoutManager baru ( ini ));

        getAllData ();

       
Tambah .setOnClickListener ( baru View . OnClickListener () {
           
@ Override
           
public void onClick ( Lihat tampilan) {

               
jika ( Tambah .getText () sama dengan (. "update" )) {


                }
lain {
                    insertData ();
                    getAllData ();
                }
            }
        });


    }

   
insertData void pribadi() {
        mahasiswaHelper.open();
        MahasiswaModel mahasiswa = new MahasiswaModel(nama.getText().toString(), nim.getText().toString());
        mahasiswaHelper.insert(mahasiswa);
        mahasiswaHelper.close();}
   

    private void getAllData() {
        mahasiswaHelper.open();
        // Ambil semua data mahasiswa di database
       
ArrayList<MahasiswaModel> mahasiswaModels = mahasiswaHelper.getAllData();
        mahasiswaHelper.close();
        mahasiswaAdapter.addItem(mahasiswaModels);
        recyclerView.setAdapter(mahasiswaAdapter);

    } 

}
   

4. Source code: DatabaseContract.java

package com.app.nurul.sqlitemodul.dbHelper;

import android.provider.BaseColumns;

public class DatabaseContract {

   
static String TABLE_MAHASISWA = "table_mahasiswa";

   
static final class MahasiswaColumns implements BaseColumns {

       
// MahasiswaModel nama
       
static String NAMA = "nama";
       
// MahasiswaModel nim
       
static String NIM = "nim";

    }
}



5. Kode sumber: DatabaseHelper.java

paket com.app.nurul.sqlitemodul.dbHelper ; 
impor android.content.Context ;
impor android.database.sqlite.SQLiteDatabase ;
impor android.database.sqlite.SQLiteOpenHelper ;

impor android.provider.BaseColumns statis . _ID ;
impor statis com.app.andra.sqlitemodul.dbHelper.DatabaseContract .
MahasiswaColumns . NAMA ; 
impor statis com.app.andra.sqlitemodul.dbHelper.DatabaseContract .
MahasiswaColumns . NIM ; 
impor statiscom.app.andra.sqlitemodul.dbHelper.DatabaseContract .
TABLE_MAHASISWA ; 
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1 ; 
public static String CREATE_TABLE_MAHASISWA = "buat tabel" + 
TABLE_MAHASISWA + "(" + _ID + "integer primary key autoincrement," + 
NAMA + "text not null," + NIM + "text not null);" ; statistik pribadi
   
   
String DATABASE_NAME = "dbmahasiswa" ;
   
public DatabaseHelper ( Contextcontext) {
       
super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
   
@Override
   
public void onCreate(SQLiteDatabase db) {
        db.execSQL(
CREATE_TABLE_MAHASISWA);
    }
   
/*
    Method onUpgrade akan di panggil ketika terjadi perbedaan versi
    Gunakan method onUpgrade untuk melakukan proses migrasi data
     */
   
@Override
   
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
       
/*
        Drop table tidak dianjurkan ketika proses migrasi
         terjadi dikarenakan data user akan hilang,
         */
       
db.execSQL("DROP TABLE IF EXISTS " + TABLE_MAHASISWA);
        onCreate(db);
    }
}

6. Source code: MahasiswaHelper.java

package com.app.andra.sqlitemodul.dbHelper;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import com.app.andra.sqlitemodul.MahasiswaModel;
import java.util.ArrayList;
import static android.provider.BaseColumns._ID;
import static com.app.andra.sqlitemodul.dbHelper.DatabaseContract.
        MahasiswaColumns.NAMA;
import static com.app.andra.sqlitemodul.dbHelper.DatabaseContract.
        MahasiswaColumns.NIM;
import static com.app.andra.sqlitemodul.dbHelper.DatabaseContract.
        TABLE_MAHASISWA;

public class MahasiswaHelper {
   
private Context context;
   
private DatabaseHelper dataBaseHelper;
   
private SQLiteDatabase database;

   
public MahasiswaHelper(Context context) {
       
this.context = context;
    }

   
public MahasiswaHelper open() throws SQLException {
       
dataBaseHelper = new DatabaseHelper(context);
       
database = dataBaseHelper.getWritableDatabase();
       
return this;
    }

   
public void close() {
       
dataBaseHelper.close();
    }
   
public ArrayList<MahasiswaModel> getAllData() {
       
Cursor cursor = database.query(TABLE_MAHASISWA, null, null, null,
         null, null, _ID + " DESC", null);
       
cursor.moveToFirst();
       
ArrayList<MahasiswaModel> arrayList = new ArrayList<>();
       
MahasiswaModel mahasiswaModel;
       
if (cursor.getCount() > 0) {
           
do {
                mahasiswaModel =
new MahasiswaModel();
                mahasiswaModel.setId(
cursor.getInt(cursor.
                    getColumnIndexOrThrow(_ID)));
                mahasiswaModel.setName(
cursor.getString(cursor.
                    getColumnIndexOrThrow(NAMA)));
                mahasiswaModel.setNim(
cursor.getString(cursor.
                    getColumnIndexOrThrow(NIM)));
               
arrayList.add(mahasiswaModel);
               
cursor.moveToNext();
            }
while (!cursor.isAfterLast());
        }
       
cursor.close();
       
return arrayList;
    }

   
public long insert(MahasiswaModel mahasiswaModel) {
       
ContentValues initialValues = new ContentValues();
       
initialValues.put(NAMA, mahasiswaModel.getName());
       
initialValues.put(NIM, mahasiswaModel.getNim());
       
return database.insert(TABLE_MAHASISWA, null, initialValues);
    }
   
public int update(MahasiswaModel mahasiswaModel) {
       
ContentValues args = new ContentValues();
       
args.put(NAMA, mahasiswaModel.getName());
       
args.put(NIM, mahasiswaModel.getNim());
       
return database.update(TABLE_MAHASISWA, args, _ID + "= '" +
        mahasiswaModel.getId() + "'", null);
    }
   
public int delete(int id) {
       
return database.delete(TABLE_MAHASISWA, _ID + " = '" + id +
        "'", null);
    }
}

7. Source code: MahasiswaAdapter.java

package com.app.nurul.sqlitemodul;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.app.nurul.sqlitemodul.dbHelper.MahasiswaHelper;
import java.util.ArrayList;
public class MahasiswaAdapter extends RecyclerView.Adapter<MahasiswaAdapter.
    CustomViewHolder> {
   
//private ArrayList<String> values;
   
private LayoutInflater mInflater;
   
private ArrayList<MahasiswaModel> mahasiswa;
   
private Context context;
   
private MahasiswaHelper mahasiswaHelper;
   
public MahasiswaAdapter(Context context) {
       
this.context = context;
       
mInflater = (LayoutInflater) context.getSystemService(Context.
        LAYOUT_INFLATER_SERVICE);
       
mahasiswaHelper = new MahasiswaHelper(context);
    }
   
// Create new views (invoked by the layout manager)
   
@Override
   
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup,
        
int viewType) {
       
// create a new view
       
LayoutInflater inflater = LayoutInflater.from(
                viewGroup.getContext());
       
View v =
               
inflater.inflate(R.layout.row_view, viewGroup, false);
       
// set the view's size, margins, paddings and layout parameters
       
CustomViewHolder vh = new CustomViewHolder(v);
       
return vh;
    }
   
// Replace the contents of a view (invoked by the layout manager)
   
@Override
   
public void onBindViewHolder(final CustomViewHolder holder,
    final int position) {
       
// - get element from your dataset at this position
        // - replace the contents of the view with that element
       
final String nama = mahasiswa.get(position).getName();
       
final String nim = mahasiswa.get(position).getNim();
        holder.
editNama.setText(nama);
        holder.
editNim.setText(nim);
        holder.
btnupdate.setOnClickListener(new OnClickListener() {
           
@Override
           
public void onClick(View view) {

     
mahasiswa.get(position).setName(holder.editNama.getText().toString());
     
mahasiswa.get(position).setNim(holder.editNim.getText().toString());
    
mahasiswaHelper.open();
    
mahasiswaHelper.update(mahasiswa.get(position));
    
mahasiswaHelper.close();
     
Toast.makeText(context, "updated", Toast.LENGTH_SHORT).show();
                notifyDataSetChanged();
            }
        });
        holder.
btndelete.setOnClickListener(new OnClickListener() {
           
@Override
           
public void onClick(View v) {
                deleteitem(
mahasiswa.get(position).getId());
               
mahasiswa.remove(position);
                notifyDataSetChanged();
            }
        });
    }

   
private void deleteitem(int id) {

        mahasiswaHelper.open();
       
mahasiswaHelper.delete(id);
       
mahasiswaHelper.close();
       
Toast.makeText(context, "deleted", Toast.LENGTH_SHORT).show();
    }
   
// Return the size of your dataset (invoked by the layout manager)
   
@Override
   
public int getItemCount() {
       
return mahasiswa.size();
    }
   
public void addItem(ArrayList<MahasiswaModel> mData) {
       
this.mahasiswa = mData;
        notifyDataSetChanged();
    }
   
// Provide a reference to the views for each data item
    // Complex data items may need more than one view per item, and
    // you provide access to all the views for a data item in a view holder
   
public class CustomViewHolder extends RecyclerView.ViewHolder {
       
// each data item is just a string in this case
       
private EditText editNama, editNim;
       
private Button btnupdate, btndelete;
       
private CardView cv;
        
public CustomViewHolder(View itemView) {
           
super(itemView);
           
editNama = (EditText) itemView.findViewById(R.id.edit_nama);
           
editNim = (EditText) itemView.findViewById(R.id.edit_nim);
           
btnupdate = (Button) itemView.findViewById(R.id.btn_update);
           
btndelete = (Button) itemView.findViewById(R.id.btn_delete);
           
cv = (CardView) itemView.findViewById(R.id.cv);
        }
    }
}

8. Source code: MahasiswaModel.java 
 
package com.app.nurul.sqlitemodul;
public class MahasiswaModel {
   
private int id;
   
private String name;
   
private String nim;
   
public MahasiswaModel() {

    }

   
public MahasiswaModel(String name, String nim) {
       
this.name = name;
       
this.nim = nim;
    }
   
public MahasiswaModel(int id, String name, String nim) {
       
this.id = id;
       
this.name = name;
       
this.nim = nim;
    }
   
public String getNim() {
       
return nim;
    }

   
public void setNim(String nim) {
       
this.nim = nim;
    }
   
public String getName() {
       
return name;
    }
   
public void setName(String name) {
       
this.name = name;
    }

   
public int getId() {
       
return id;
    }
   
public void setId(int id) {
       
this.id = id;
    }
}

9. Source code: AndroidManifest.xml 
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   
package="com.app.andra.sqlitemodul">
    <
application
       
android:allowBackup="true"
       
android:icon="@mipmap/ic_launcher"
       
android:label="@string/app_name"
       
android:roundIcon="@mipmap/ic_launcher_round"
       
android:supportsRtl="true"
       
android:theme="@style/AppTheme">
        <
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>

10. Source code: colors.xml 
 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <
color name="colorPrimary">#3FB1B5</color>
    <
color name="colorPrimaryDark">#309F96</color>
    <
color name="colorAccent">#FF4081</color>
</
resources>

11. Source code: strings.xml 
 
<resources>
    <
string name="app_name">Android1 : Nurul Puspita</string>
</
resources>

12. Source code: styles.xml 
 
<resources>
   
<!-- Base application theme. -->
   
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
       
<!-- Customize your theme here. -->
       
<item name="colorPrimary">@color/colorPrimary</item>
        <
item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <
item name="colorAccent">@color/colorAccent</item>
    </
style>
</
resources>

Dan hasil akhirnya seperti ini :


Tampilan Awal Aplikasi





Republic People Saya adalah seorang yang suka membuat konten dengan disiplin belajar baik itu mengenai Informasi teknologi (IT), wawasan umum, berita terkini, soal - soal ujian maupun psikotes dan membagikan tips dan trik yang bermanfaat bagi diri saya khususnya maupun masyarakat luas.

0 Response to "Cara Membuat Aplikasi Android dengan Memanfaatkan SQLite Sebagai Media Penyimpanan "

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel