Subscribe For Free Updates!

We'll not spam mate! We promise.

Jumat, 21 Agustus 2015

Aplikasi CRUD Android Menggunakan database Mysql

Hai, kawan-kawan kali ini saya akan membuat tutorial CRUD (Create Read Update Delete) Android dengan menggunakan database Mysql untuk perantaranya menggunakan file php. Program yang saya buat adalah data produk dimana nantinya kita bisa membuat(create), mengedit(Update), membaca(read), dan menghapus(delete) data.
Sebelum saya mulai, ada yang perlu kawan-kawan ketahui bahwa seringkali saat pembuatan program kita selalu salah membedakan variable, nah mulai sekarang saya akan membedakan variable dari file php dan kelas java yang ada di android, agar kawan-kawan bisa membedakan dan belajar dengan lebih mudah.

 Yosh Langsung saja, pertama buat database terlebih dahulu, database = “crud_ar” table=”produk” dengan field sebagai berikut : 



Kedua buatlah file php sebagai aksi CRUD, disini saya berinama aksi.php dengan kode sebagai berikut :

<?php
mysql_connect("localhost","root","");
mysql_select_db("crud_ar"); //database name
switch($_GET['a']){
case "insert" :
                $id = $_GET['kd'];
                $nm = $_GET['nm'];
                $hrg = $_GET['hrg'];
                $des = $_GET['deskripsi'];
                $result = mysql_query("INSERT INTO produk(kd,nm,hrg,deskripsi) VALUES('$id','$nm','$hrg','$des')");
                if($result){
                                echo "berhasil insert data";
                }else{
                                echo "nm".$nm;
                }
break;
case "update":
                $kd = $_GET['kd'];
                $nm = $_GET['nm'];
                $hrg = $_GET['hrg'];
                $des = $_GET['des'];
                $result = mysql_query("UPDATE produk SET nm='$nm' , hrg='$hrg', deskripsi='$des' WHERE kd='$kd'");
                if($result){
                                echo "berhasil ubah data";
                }else{
                                echo "gagal ubah data";
                }
break;
case "delete":
                $id = $_GET['kd'];
                $result = mysql_query("DELETE FROM produk WHERE kd='$id'");
                if($result){
                                echo "berhasil hapus data";
                }else{
                                echo "gagal hapus data";
                }
break;
case "read":
                $kd=$_GET['kd'];
                /* Source code untuk Menampilkan Data */
                $q = mysql_query("SELECT * FROM produk where kd='$kd'");
                $v = '{"data" : [';
                while($r=mysql_fetch_array($q))
                {
                                $ob = array('"','<br>','</br>');
                                $v .='{"kd" : "'.$r['kd'].'", "nm" : "'.str_replace($ob,' ',strip_tags($r["nm"])).'","hrg" : "'.str_replace($ob,' ',strip_tags($r["hrg"])).      '","deskripsi" : "'.str_replace($ob,' ',strip_tags($r["deskripsi"])).'"}';
                }
                $v .= ']}';
                echo $v;
}
?>

Fungsi dari kode di atas adalah untuk menerima request dari client kepada server.Ketiga buatlah project Androidnya di Eclipse, seperti gambar dibawah ini :

Keterangan project Android :
Project name = prak_Crud
Package Name = arum.jiyu.com
SDK = Android 2.3.1 (min 9)

Keempat buat kelas object Json (bagi yang belum tahu membuat kelas object caranya : klik kanan package “arum.jiyu.com” >> New >> Class >> isi (Name = JSONParser  Superclass=java.lang.Object hilangkan centang pada “Inherited abstract methods” >> Finish)), berikut SourceCode JSONParser.java :

package arum.jiyu.com;   

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {
       static InputStream is = null;
       static JSONObject jObj = null;
       static String json = "";

       public JSONObject AmbilJson(String url) {

              try {
                     DefaultHttpClient httpClient = new DefaultHttpClient();
                     HttpPost httpPost = new HttpPost(url);

                     HttpResponse httpResponse = httpClient.execute(httpPost);
                     HttpEntity httpEntity = httpResponse.getEntity();
                     is = httpEntity.getContent();

              } catch (UnsupportedEncodingException e) {
                     e.printStackTrace();
              } catch (ClientProtocolException e) {
                     e.printStackTrace();
              } catch (IOException e) {
                     e.printStackTrace();
              }

              try {
                     BufferedReader reader = new BufferedReader(new InputStreamReader(
                                  is, "iso-8859-1"), 8);
                     StringBuilder sb = new StringBuilder();
                     String line = null;
                     while ((line = reader.readLine()) != null) {
                           sb.append(line);
                     }
                     is.close();
                     json = sb.toString();
              } catch (Exception e) {
                     Log.e("Buffer Error", "Error converting result " + e.toString());
              }

              try {
                     jObj = new JSONObject(json);
              } catch (JSONException e) {
                     Log.e("JSON Parser", "Error parsing data " + e.toString());
              }

              return jObj;

       }
}

Kelima buatlah layout seperti berikut, di main.xml :




















Source code main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Kode" >
    </TextView>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/editKode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btnCek"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cek" />

    </LinearLayout>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Nama" >
    </TextView>


    <EditText
        android:id="@+id/editNama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    </EditText>

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Harga" />

    <EditText
        android:id="@+id/editHarga"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Deskripsi" />


    <EditText
        android:id="@+id/editDes"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.27"
        android:inputType="textMultiLine" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/buttonInsert"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="insert" >
        </Button>

        <Button
            android:id="@+id/buttonUpdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="update">
        </Button>

        <Button
            android:id="@+id/buttonDelete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="delete" >
        </Button>
    </LinearLayout>

</LinearLayout>

Keenam, tulis source code di bawah ini di kelas Prak_CrudActivity.java :

package arum.jiyu.com;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

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

public class Prak_CrudActivity extends Activity {
       /** Called when the activity is first created. */
       private EditText kode, nama, harga, deskripsi;
       private Button insert, update, delete, cek;
       private String kode1, nama1, harga1, deskripsi1;
       JSONArray data = null;

       @Override
       public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
              kode = (EditText) findViewById(R.id.editKode);
              nama = (EditText) findViewById(R.id.editNama);
              harga = (EditText) findViewById(R.id.editHarga);
              deskripsi = (EditText) findViewById(R.id.editDes);
              cek = (Button) findViewById(R.id.btnCek);
              insert = (Button) findViewById(R.id.buttonInsert);
              update = (Button) findViewById(R.id.buttonUpdate);
              delete = (Button) findViewById(R.id.buttonDelete);

              insert.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {
                           // TODO Auto-generated method stub
                           String url = "";
                           // karena saya menggunakan Genymotion sebagai emulator
// jadi IP address = 10.0.3.2 namun jika kawan kawan
// menggunakan emulator bawaan eclipse
                           // silahkan gunakan IP Address 10.0.2.2
                           url = "http://10.0.3.2/crud/aksi.php";

                           try {
                           String ko = URLEncoder.encode(kode.getText().toString(),
                                                "utf-8");
                           String n = URLEncoder.encode(nama.getText().toString(),
                                                "utf-8");
                           String hr = URLEncoder.encode(harga.getText().toString(),
                                                "utf-8");
                           String d = URLEncoder.encode(
deskripsi.getText().toString(), "utf-8");

                           url += "?a=insert&kd=" + ko + "&nm=" + n + "&hrg=" + hr
                                                + "&deskripsi=" + d;

                                  getRequest(url);
                           } catch (UnsupportedEncodingException e) {
                                  e.printStackTrace();
                           }

                     }
              });
             
              update.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {
                           String url = "";
                           // karena saya menggunakan Genymotion sebagai emulator
// jadi IP address = 10.0.3.2 namun jika kawan kawan
// menggunakan emulator bawaan eclipse
                           // silahkan gunakan IP Address 10.0.2.2
                            url = "http://10.0.3.2/crud/aksi.php";

                           try {
                           String ko = URLEncoder.encode(kode.getText().toString(),
                                                "utf-8");
                           String n = URLEncoder.encode(nama.getText().toString(),
                                                "utf-8");
                           String hr = URLEncoder.encode(harga.getText().toString(),
                                                "utf-8");
                           String d = URLEncoder.encode(
                                         deskripsi.getText().toString(), "utf-8");

                           url += "?a=update&kd=" + ko + "&nm=" + n + "&hrg=" + hr
                                                + "&des=" + d;

                                  getRequest(url);
                           } catch (UnsupportedEncodingException e) {
                                  e.printStackTrace();
                           }  
                     }
              });
              delete.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {
                           // TODO Auto-generated method stub
                           String url = "";
                           kode1 = kode.getText().toString();
                           url = "http://10.0.3.2/crud/aksi.php?a=delete&kd="
                                         + kode1;
                           getRequest(url);
                     }
              });
              cek.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {
                           // TODO Auto-generated method stub
                           kode1 = kode.getText().toString();
                     String url = "http://10.0.3.2/crud/aksi.php?a=read&kd=" + kode1;
                           JSONParser jParser = new JSONParser();

                           JSONObject json = jParser.AmbilJson(url);

                           try {
                                  data = json.getJSONArray("data");

                                  for (int i = 0; i < data.length(); i++) {
                                         JSONObject ar = data.getJSONObject(i);

                                         String kode_d = ar.getString("kd");
                                         String nama_d = ar.getString("nm");
                                         String harga_d = ar.getString("hrg");
                                         String des_d = ar.getString("deskripsi");

                                         kode.setText(kode_d);
                                         nama.setText(nama_d);
                                         harga.setText(harga_d);
                                         deskripsi.setText(des_d);
                                  }
                           } catch (JSONException e) {
                                  e.printStackTrace();
                           }   

                     }
              });

       }

       public void getRequest(String url) {
              Toast.makeText(this, url, Toast.LENGTH_LONG).show();
              HttpClient client = new DefaultHttpClient();
              HttpGet request = new HttpGet(url);
              try {
                     HttpResponse response = client.execute(request);
                     Toast.makeText(this, request(response) + ":)",
                                  Toast.LENGTH_SHORT).show();
              } catch (Exception ex) {
                     Toast.makeText(this, "data gagal", Toast.LENGTH_SHORT).show();
              }

       }

       public static String request(HttpResponse reponse) {
              String result = "";

              try {
                     InputStream in = reponse.getEntity().getContent();
                     BufferedReader reader = new BufferedReader(
                                  new InputStreamReader(in));
                     StringBuilder str = new StringBuilder();
                     String line = null;

                     while ((line = reader.readLine()) != null) {
                           str.append(line + "\n");
                     }

                     in.close();
                     result = str.toString();
              } catch (Exception e) {
                     result = "Error";
              }

              return result;
       }
}

Terakhir, jangan lupa untuk menambah uses permission di AndroidManifest.xml sebagai berikut :


Jika sudah silahkan jalankan maka hasilnya sebagai berikut :







Terima kasih sudah berkunjung, semoga tutorial saya bermanfaat untuk kawan-kawan J semangat !!
Untuk download program dan tutorial silahkan klik menu DOWNLOAD

Socializer Widget By Blogger Yard
SOCIALIZE IT →
FOLLOW US →
SHARE IT →

31 komentar:

  1. ka kenapa ya muuncul pesan "data gagal" aja ?

    BalasHapus
    Balasan
    1. kmu download source codenya atau buat praktek dr awal?

      Hapus
  2. trimakasih tutorialnya gan.

    kunjungi aplikasipbbonline.wordpress.com
    kami penyedia aplikasi sistem informasi PBB Online:

    -SIMPBB (Sistem Informasi Manajemen Pajak Bumi dan Bangunan)
    -SIBPHTB (Sistem Informasi Bea Perolehan Hak Tanah dan Banguan)
    -SIG (Sistem Informasi Geografis)

    Informasi lebih lanjut hubungi www.aplikasipemda.com
    brahmanto@cendana2000.co.id Telp. 089691540880

    BalasHapus
  3. apakah ada cara lain selain menggunakan php?

    BalasHapus
    Balasan
    1. Setau q tdk bs, soalnya blm prnh nyoba penghubung android dgn database pke bahasa pemrograman selain php, klo databasenya pake sqlite CRUD nya bs lngsung d kode class nya

      Hapus
  4. apakah ada cara lain selain menggunakan php?

    BalasHapus
  5. file aksi.php nya taro di workplace apa dalam eclipse

    BalasHapus
  6. Aksi.php d taruh di dir xampp/htdocs/

    BalasHapus
  7. kalo emulatornya hp sendiri, ip nya berapa ya ?

    BalasHapus
    Balasan
    1. klo hp nya terkoneksi PC itu bisa dilihat dengan cara



      adb shell
      ifconfig eth0

      --> ketikkan di CMD dan hasilnya bermacam-macam, tapi ip umumnya 10.0.2.15

      tetapi jika tidak terkoneksi pada pc, maka databasenya harus di onlinekan terlebih dahulu

      Hapus
  8. Saya coba di android studio DefaultHttpClient() atau httpClient kok gak di ketahui yah selalu resolved . . begitu juga dengan importnya

    masalah ini apa karena librarynya?

    BalasHapus
    Balasan
    1. yup bnar sekali karena library nya, cb pake library volley :)

      Hapus
  9. Saya coba di android studio DefaultHttpClient() atau httpClient kok gak di ketahui yah selalu resolved . . begitu juga dengan importnya

    masalah ini apa karena librarynya?

    BalasHapus
  10. mbak,mau nanya pada saat button cek di klik langsung force close lalu pada saat button insert di klik muncul pesan "data gagal",begitu juga dengan button update dan delete
    mohon pencerahannya :)

    BalasHapus
    Balasan
    1. mbb, semua pengkodean butuh ketelitian, cb mbak kode nya di cek mungkin ada yg krg, kalau muncul pesan "data gagal" biasanya karena tidka terhubung dengan file aksi.php nya

      Hapus
  11. mbak source codenya gabisa didownload mba, mohon re-upload

    makasih

    BalasHapus
    Balasan
    1. mohon maaf mas, akun saya terhapus oleh ziddu, sedangkan data projectnya ada di sana, untuk sementara bisa gunakan tutorial .pdf nya

      Hapus
  12. muncul eror kalau dijalankan"your project contains error(s),please fix then before running your apllication"
    itu eror karena kekurangan library apa?

    BalasHapus
    Balasan
    1. apakah penulisan kode nya sdh benar dan sesuai tutorial? dan mas joko menggunakan IDE apa? android studio atau eclipse

      Hapus
  13. terimakasih toturial moga saja tidak eror :)

    BalasHapus
  14. program linknya error untuk download Aplikasi CRUD, Android - MYSQL . bisa kirim link yang benar ? mohon konfirmasinya

    BalasHapus
    Balasan
    1. mohon maaf mbak bisa ikuti atau download tutorial *.pdf, untuk sementara ikuti tutorial yang ada dulu mbak, karena akun sya di ziddu terhapus, sedangkan project nya ada di sana, saya juga masih blm sempet buat lagi, kalau sempat saya akan buat lagi dan reupload

      Hapus
  15. pesannya "data gagal" terus gan ketika insert data, masalahnya apa ya gan?

    BalasHapus
    Balasan
    1. tidak terhubung dengan file aksi.php

      coba di cek kembali mas

      Hapus
  16. mantap mbak, terima kasih banyak atas ilmunya :D

    BalasHapus
  17. KOK EROOR YA
    gmana
    kok gagal data
    cek data force close
    pencerahanya tolong gun

    plis

    BalasHapus
    Balasan
    1. cek kembali kode aksi.php dan kode android nya

      Hapus
  18. kak bisa kirim link download programnya

    BalasHapus
  19. 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

    BalasHapus
  20. wah akhirnya ad web yang bisa membantu saya dalam hal membuat wordpress, artikelnya menarik dan memanjakan mata untuk di baca

    perkenalkan nama saya Titannia yulanda NIM 1822500065 dari ISB Atma Luhur

    BalasHapus