Kompetensi Dasar :

3.30 Menerapkan aplikasi basis data mobile

4.30 Membuat pengolahan basis data mobile

Materi Pokok :

1. Konsep Dasar Data Base dalam Aplikasi Mobile

2. Komponen Sistem Basis Data (Database)

3. Tahapan Perancangan Database

4. Menghubungkan Database Dalam Aplikasi Mobile

Konsep Data Base

Basis data (Data Base) adalah suatu kumpulan data terhubung yang disimpan secara bersama-sama pada suatu media, yang diorganisasikan berdasarkan sebuah skema atau struktur tertentu, dan dengan software untuk melakukan manipulasi untuk kegunaan tertentu.


Dari pengertian tersebut dapat disimpulkan bahwa basis data (database) mempunyai beberapa kriteria penting, yaitu :

  • Bersifat data oriented dan bukan program oriented
  • Dapat digunakan oleh beberapa program aplikasi tanpa perlu mengubah basis datanya.
  • Dapat berkembang dengan mudah, baik volume maupun strukturnya.
  • Dapat memenuhi kebutuhan sistem-sistem baru secara mudah.
  • Dapat digunakan dengan cara-cara yang berbeda.


  • Pemanfaatan basis data :

  • Sebagai salah satu komponen penting dalam sistem informasi, karena merupakan dasar dalam menyediakan informasi.
  • Menentukan kualitas informasi : akurat, tepat waktu dan relevan.
  • Mengurangi duplikasi data (data redundancy)
  • Hubungan data dapat ditingkatkan.
  • Manipulasi terhadap data dengan cepat dan mudah.
  • Efisiensi penggunaan ruang penyimpanan.



  • Database Management System (DBMS)

    Database Management System (DBMS) merupakan sebuah perangkat lunak yang berhubungan dengan pengguna, aplikasi lainnya, dan basis data secara langsung untuk mengambil, menyimpan, dan menganalisa data yang ada.




    Penyimpanan data dalam bentuk DBMS mempunyai banyak manfaat dan kelebihan dibandingkan dengan penyimpanan dalam bentuk flat file atau spreadsheet, diantaranya :

  • Performa yang dapat dengan penyimpanan dalam bentuk DBMS cukup besar.
  • Integritas data lebih terjamin dengan penggunaan DBMS.
  • Independensi.
  • Sentralisasi.
  • Keamanan.

  • Keunggulan DBMS antara lain sbb:

  • Mengurangi duplikasi data atau data redundancy.
  • Menjaga konsistensi dan integritas data.
  • Meningkatkan keamanan data.
  • Meningkatkan effisiensi dan effektivitas penggunaan data.
  • Meningkatkan produktivitas para pengguna data.
  • Memudahkan pengguna dalam menggali informasi dari kumpulan data.
  • Meningkatkan pemeliharaan data melalui independensi data.
  • Meningkatkan pemakaian bersama dari data.
  • Meningkatkan layanan backup dan recovery data.
  • Mengurangi konflik antar pengguna data.


  • Komponen Sistem Basis Data (Database)

  • Perangkat Keras ( Hardware )
    Perangkat keras yang biasanya terdapat dalam sistem basis data adalah memori sekunder hardisk.

  • Sistem Operasi ( Operating System )
    Sistem Operasi (Operating System) merupakan program yang mengaktifkan atau mengfungsikan sistem komputer, mengendalikan seluruh sumber daya (resource) dan melakukan operasi-operasi dalam komputer. Sistem Operasi yang banyak digunakan seperti: MS-DOS, MS-Windows 95 MS Windows NT, dan Unix.

  • Basis data ( Database )
    Sebuah basis data (Database) dapat memiliki beberapa basis data. Setiap basis data dapat berisi atau memiliki sejumlah objek basis data seperi file atau tabel. Database Management System (DBMS).

  • Pemakai ( User )
    Bagi pemakai dapat berinteraksi dengan basis data dan memanipulasi data dalam program yang ditulis dalam bahasa pemograman.



  • Perangkat Lunak Database (Basis data)

    Perangkat lunak database ( basis data ) yang banyak digunakan dalam pemrograman

  • MySQL
  • Microsoft SQL Server
  • Relational Database Management System ( RDBMS )
  • Clipper
  • DBASE
  • Firebird



  • Tahapan Perancangan Database

  • Perencanaan database ( basis data )
  • Mendefiniskan system
  • Analisa dan mengumpulkan kebutuhan
  • Perancangan database ( basis data )
  • Perancangan aplikasi
  • Membuat prototype
  • Implementasi
  • Konversi data
  • Pengujian
  • Pemeliharaan operasional



  • Menghubungkan Database Dalam Aplikasi Mobile

    Tutorial : cara menghubungkan database MySQL dengan android studio



    Banyak cara yang dapat dilakukan untuk menghubungkan aplikasi client (android) dengan sebuah server seperti: MySQL, firebase, mongoDB, postgreSQL dll. Disini kita akan bahas cara untuk menghubungkan aplikasi client (android) dengan database MySQL.


    Untuk langkah pertama mari kita siapkan dulu database nya, buat database dengan nama tutorial_1 dan table dengan nama mahasiswa. Dengan field-field sebagai berikut:



    Setelah selesai dibuat, insert database dengan data sebagai berikut:



    Selanjutnya kita masuk ke directori xampp, kalo di windows biasanya ada di C:/Program Files/XAMPP/htdocs. Untuk pengguna OS lain silahkan menyesuaikan. Lalu kita buat sebuah folder dengan nama apiClient.


    Jika sudah, kita buat sebuah file di dalam folder /apiClient dengan nama koneksi.php. lalu isi file tersebut dengan kode dibawah ini:


    <?php // mengkoneksikan ke database $host = "localhost"; //sesuaikan $username = "root"; //sesuaikan $password = ""; //sesuaikan $database_name = "tutorial_1"; //sesuaikan $conn = new Mysqli($host, $username, $password, $database_name); ?>

    Selanjutnya kita buat satu file lagi di dalam folder /apiClient dengan nama mahasiswa.php. dan isikan kode dibawah ini:


    <?php // include file koneksi require 'koneksi.php'; // buat qUery perintah untuk menampilkan semua data // Secara Descending berdasarkan ID $sql = "SELECT * FROM mahasiswa ORDER BY id DESC"; $query = $conn->query($sql); // Variable penampung array sementara $response_data = null; while ($data = $query->fetch_assoc()) { // tambahkan data yg di seleksi ke dalam array $response_data[] = $data; } // Cek apakah datanya null ? if (is_null($response_data)) { // jika ya, buat status untuk response jadi false $status = false; } else { // jika tidak, buat status untuk response jadi true $status = true; } // Set type header response ke Json header('Content-Type: application/json'); // Bungkus data dalam array $response = ['status' => $status, 'mahasiswa' => $response_data]; // tampilkan dan convert ke format json echo json_encode($response); ?>

    Selanjutnya kita buat folder images di dalam folder /apiClient lalu masukan foto dengan nama sesuai dengan data didatabase. Sehingga seluruh isi folder menjadi seperti:



    Selanjutnya kita masuk ke project android nya, pertama buka android studio lalu pilih new project, pilih empty activity lalu muncul seperti gambar dibawah ini, scroll kebawah lalu klik finish.



    Next buka file build.gradle (module app) dan tambahkan :


    implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'androidx.recyclerview:recyclerview:1.1.0'

    Ubah file activity_main.xml yang berada di package res/layout menjadi:


    <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" tools:context=".MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/ListMahasiswa" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>

    Next, buat file xml baru di package res/layout dengan nama mahasiswa_item.xml lalu isikan:


    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:weightSum="10"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="20dp"> <ImageView android:id="@+id/fotoMhs" android:layout_width="match_parent" android:layout_height="360dp" android:layout_marginHorizontal="10dp" android:scaleType="fitXY" android:src="@mipmap/ic_launcher" /> </LinearLayout> <TextView android:id="@+id/namaMhs" android:layout_marginTop="15dp" android:fontFamily="monospace" android:textSize="18sp" android:text="Juned" android:textColor="@color/colorPrimaryDark" android:layout_width="match_parent" android:layout_height="wrap_content"></TextView> <TextView android:id="@+id/nimMhs" android:layout_marginTop="15dp" android:fontFamily="monospace" android:textSize="18sp" android:text="12474574" android:textColor="@color/colorPrimaryDark" android:layout_width="match_parent" android:layout_height="wrap_content"></TextView> </LinearLayout>

    Next, buat package baru di folder project java dengan nama network, lalu buat file java dengan nama Init.java sehingga menjadi seperti:



    Isi file Init.java dengan kode:


    package com.example.mahasiswa.network; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class Init { // URL Server API public static String API_URL = "http://192.168.20.157/apiClient/"; //samakan api address dengan komputer anda public static Retrofit setInit() { return new Retrofit.Builder().baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); } public static ApiServices getInstance() { return setInit().create(ApiServices.class); } }

    Next, buat file interface didalam package network dengan nama ApiServices dan isikan kode:


    package com.example.mahasiswa.network; import com.example.mahasiswa.response.ResponseMahasiswa; import retrofit2.Call; import retrofit2.http.GET; public interface ApiServices { //@TIPEMETHOD("API_END_POINT") @GET("mahasiswa.php") Call<ResponseMahasiswa> request_show_all_mahasiswa(); // <ModelData> nama_method() }

    Next, buat package baru dengan nama response dan didalam nya buat file ResponseMahasiswa.java lalu isikan kode:


    package com.example.mahasiswa.response; import com.google.gson.annotations.SerializedName; import java.util.List; public class ResponseMahasiswa { @SerializedName("mahasiswa") private List<MahasiswaItem> mahasiswa; @SerializedName("status") private boolean status; public void setMahasiswa(List<MahasiswaItem> mahasiswa){ this.mahasiswa = mahasiswa; } public List<MahasiswaItem> getMahasiswa(){ return mahasiswa; } public void setStatus(boolean status){ this.status = status; } public boolean isStatus(){ return status; } @Override public String toString(){ return "ResponseMahasiswa{" + "mahasiswa = '" + mahasiswa + '\'' + ",status = '" + status + '\'' + "}"; } }

    Next, buat file MahasiswaItem.java di dalam package response, lalu isikan kode:


    package com.example.mahasiswa.response; import com.google.gson.annotations.SerializedName; public class MahasiswaItem { @SerializedName("foto") private String foto; @SerializedName("id") private String id; @SerializedName("nama_mahasiswa") private String nama_mahasiswa; @SerializedName("nim_mahasiswa") private String nim_mahasiswa; public String getFoto() { return foto; } public void setFoto(String foto) { this.foto = foto; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNama_mahasiswa() { return nama_mahasiswa; } public void setNama_mahasiswa(String nama_mahasiswa) { this.nama_mahasiswa = nama_mahasiswa; } public String getNim_mahasiswa() { return nim_mahasiswa; } public void setNim_mahasiswa(String nim_mahasiswa) { this.nim_mahasiswa = nim_mahasiswa; } @Override public String toString(){ return "MahasiswaItem{" + "foto = '" + foto + '\'' + ",id = '" + id + '\'' + ",nama_mahasiswa = '" + nama_mahasiswa + '\'' + ",nim_mahasiswa = '" + nim_mahasiswa + '\'' + "}"; } }

    Next, buat file java dengan nama AdapterMahasiswa.java lalu isikan kode:


    package com.example.mahasiswa; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.example.mahasiswa.response.MahasiswaItem; import com.squareup.picasso.Picasso; import java.util.List; public class AdapterMahasiswa extends RecyclerView.Adapter<AdapterMahasiswa.MyViewHolder> { Context context; List<MahasiswaItem> mahasiswa; public AdapterMahasiswa(Context context, List<MahasiswaItem> data_mahasiswa) { // Inisialisasi this.context = context; this.mahasiswa = data_mahasiswa; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // Layout inflater View view = LayoutInflater.from(context).inflate(R.layout.mahasiswa_item, parent, false); // Hubungkan dengan MyViewHolder MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, final int position) { // Set widget holder.namaMhs.setText(mahasiswa.get(position).getNama_mahasiswa()); holder.nimMhs.setText(mahasiswa.get(position).getNim_mahasiswa()); //holder.wvKontenAbout.getSettings().setJavaScriptEnabled(true); //holder.wvKontenAbout.loadData(about.get(position).getDeskripsi(), "text/html; charset=utf-8", "UTF-8"); // Dapatkan url gambar final String urlGambarAbout = "http://192.168.20.157/apiClient/images/" + mahasiswa.get(position).getFoto(); // Set image ke widget dengna menggunakan Library Piccasso // krena imagenya dari internet Picasso.with(context).load(urlGambarAbout).into(holder.fotoMhs); } // Menentukan Jumlah item yang tampil @Override public int getItemCount() { return mahasiswa.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { // Deklarasi widget ImageView fotoMhs; TextView namaMhs, nimMhs; public MyViewHolder(View itemView) { super(itemView); // inisialisasi widget fotoMhs = (ImageView) itemView.findViewById(R.id.fotoMhs); namaMhs = (TextView) itemView.findViewById(R.id.namaMhs); nimMhs = (TextView) itemView.findViewById(R.id.nimMhs); } } }

    Next, ubah MainActivity.java menjadi seperti:


    package com.example.mahasiswa; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.example.mahasiswa.network.ApiServices; import com.example.mahasiswa.network.Init; import com.example.mahasiswa.response.MahasiswaItem; import com.example.mahasiswa.response.ResponseMahasiswa; import java.util.List; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.ListMahasiswa); // RecyclerView harus pakai Layout manager recyclerView.setLayoutManager(new LinearLayoutManager(this)); // Eksekusi method tampilMahasiswa(); } private void tampilMahasiswa() { ApiServices api = Init.getInstance(); // Siapkan request Call<ResponseMahasiswa> aboutCall = api.request_show_all_mahasiswa(); // Kirim request aboutCall.enqueue(new Callback<ResponseMahasiswa>() { @Override public void onResponse(Call<ResponseMahasiswa> call, Response<ResponseMahasiswa> response) { // Pasikan response Sukses if (response.isSuccessful()) { Log.d("response api", response.body().toString()); // tampung data response body ke variable List<MahasiswaItem> data_mahasiswa = response.body().getMahasiswa(); boolean status = response.body().isStatus(); // Kalau response status nya = true if (status) { // Buat Adapter untuk recycler view AdapterMahasiswa adapter = new AdapterMahasiswa(MainActivity.this, data_mahasiswa); recyclerView.setAdapter(adapter); } else { // kalau tidak true Toast.makeText(MainActivity.this, "Tidak ada Data", Toast.LENGTH_SHORT).show(); } } } @Override public void onFailure(Call<ResponseMahasiswa> call, Throwable t) { // print ke log jika Error t.printStackTrace(); } }); } }

    Terakhir tambahkan kode berikut di file AndroidManifest.xml :


    <uses-permission android:name="android.permission.INTERNET" />

    Sehingga tampilan seluruh folder menjadi seperti: