CRUD Android Dengan JSON dan MySQL

TUTORIAL ANDROID MEMBUAT CRUD DENGAN JASON DAN DATABASE MYSQL



Selamat Datang di Blog Orang IT . Postingan saya sebelumnya mengenai Cara Ampuh Mempercepat Download IDM Terbaru selanjutnya postingan kali ini adalah Tutorial Membuat Aplikasi CRUD Android dengan JSON dan MySQL . Aplikasi ini dibuat dengan Software Eclipse versi Luna dan untuk server DataBasenya menggunakan Xampp silahkan yang belum punya Softwarenya bisa browsing di google.

Hari ini adalah tugas presentasi Mata Kuliah Pemrograman Jaringan , karena sudah capek-capek membuat progran CRUD ( Create , Update , Delete, Read ) sederhana tentang penjualan Pakaian . Namun karena kelompok saya tidak presentasi  didepan kelas karena ada alasan tertentu , dari pada Project buatan saya sia-sia saya terpikir untuk share saja di Blog mungkin akan ditemukan beberapa orang yang mengalami tugas yang sama atau sekedar mencari referensi. ( true story )

Soal Android :

1. Buatlah Aplikasi Web Service Android yang dapat melakukan proses CRUD ( Tambah, Edit, Hapus, Delete ) pada Database MySQL dengan menggunakan Parsing JSON atau XML ( saya pakai JSON )

Ketentuan :

1. Database saya menggunakan XAMPP
2. Web Service juga XAMPP
3. Android Client saya menggunakan HP Android saya untuk menjalankan Aplikasi nya

Bahan :

1. Software Ecipse versi Luna untuk membuat Aplikasi
2. Web Server dan DataBase menggunakan XAMPP
3. HP Android sebagai Client

Tutorial :

1.  Buat DataBase MySQL dengan nama pakaian dan tabel db_pakaian dengan isi field id, merk , jenis, ukuran dan harga tipe data varchar kecuali id bertipe data integer dan primary



2.  Buat file PHP yang digunakan untuk mengubah file DataBase MySQL sesuai dengan permintaan CLient , silahkan masuk Folder C:\xampp\htdocs\pakaian dan buat file server.php pada file tersebut berisi script tambah , edit , hapus , lihat data seperti biasanya

<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "pakaian";

mysql_connect($server, $username, $password) or die("<h1>Koneksi Mysql Error : 
</h1>" . mysql_error());
mysql_select_db($database) or die("<h1>Koneksi Kedatabase Error : </h1>" .
mysql_error());

@$operasi = $_GET['operasi'];
switch ($operasi) {
    case "view":

        $query_tampil_pakaian = mysql_query("SELECT * FROM db_pakaian")
 or die(mysql_error());
        $data_array = array();
        while ($data = mysql_fetch_assoc($query_tampil_pakaian)) {
            $data_array[] = $data;
        }
        echo json_encode($data_array);
        break;
    case "insert":
        /* Source code untuk Insert data */
        @$merk = $_GET['merk'];
        @$jenis = $_GET['jenis'];
  @$ukuran = $_GET['ukuran'];
  @$harga = $_GET['harga'];
        $query_insert_data = mysql_query("INSERT INTO db_pakaian
 (merk, jenis, ukuran, harga) VALUES('$merk', '$jenis', '$ukuran', '$harga')");
        if ($query_insert_data) {
            echo "Data Berhasil Disimpan";
        } else {
            echo "Error Insert Pakaian " . mysql_error();
        }
        break;
    case "get_pakaian_by_id":
       
        @$id = $_GET['id'];
        $query_tampil_pakaian = mysql_query("SELECT * FROM db_pakaian 
WHERE id='$id'"
) or die(mysql_error());
        $data_array = array();
        $data_array = mysql_fetch_assoc($query_tampil_pakaian);
        echo "[" . json_encode($data_array) . "]";

        break;
    case "update":
        /* Source code untuk Update Biodata */
    @$merk = $_GET['merk'];
        @$jenis = $_GET['jenis'];
  @$ukuran = $_GET['ukuran'];
  @$harga = $_GET['harga'];
        @$id = $_GET['id'];
        $query_update_pakaian = mysql_query("UPDATE db_pakaian SET merk='$merk',
 jenis='$jenis' , ukuran='$ukuran',harga='$harga' WHERE id='$id'");
        if ($query_update_pakaian) {
            echo "Update Data Berhasil";
        } else {
            echo mysql_error();
        }
        break;
    case "delete":
        /* Source code untuk Delete Biodata */
        @$id = $_GET['id'];
        $query_delete_pakaian = mysql_query("DELETE FROM db_pakaian WHERE
 id='$id'");
        if ($query_delete_pakaian) {
            echo "Delete Data Berhasil";
        } else {
            echo mysql_error();
        }

        break;

    default:
        break;
}
?>
3. Buka Software Eclipse buat new project dengan nama pakaian , kemudian pada bagian src buat 3 kelas yaitu MainActivity.java , Koneksi.Java , Pakaian.java dan di bagian res - layout  ada file tampilan dengan format xml

CRUD Android Dengan JSON dan MySQL

4. Sebelumnya buka AndroidManifest.xml ( filenya ada dibawah sendiri ) kemudian tambahkan

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

untuk memperbolehkan akses internet menjadi 
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jhohannes.purba"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="jhohannes.purba.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest> 
5. Buka res - Layout - Activity_main.xml isikan Script berikut ini

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.examplore.deathnote.MainActivity" >
   
    <Button
        android:id="@+id/buttonTambahPakaian"
        android:layout_width="186dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Tambah Pakaian" />

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ScrollView
            android:id="@+id/verticalScrollView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TableLayout
                android:id="@+id/tablePakaian"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp" >
            </TableLayout>
        </ScrollView>
    </HorizontalScrollView>

</LinearLayout>
Pada layout saya membuat TableLayout berada pada VerticalScrollView di dalamScrollView, ini berfungsi agar data yang memiliki lebar lebih dari ukuran layar secara otomoatis terscroll sehingga data semua bisa kelihatan.

6. Berikut isi Script pada Koneksi.java

package com.examplore.deathnote;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class Koneksi {

    public String call(String url) {
          int BUFFER_SIZE = 2000;
          InputStream in = null;
          try {
           in = OpenHttpConnection(url);
          } catch (IOException e) {
           e.printStackTrace();
           return "";
          }
          InputStreamReader isr = new InputStreamReader(in);
          int charRead;
          String str = "";
          char[] inputBuffer = new char[BUFFER_SIZE];
          try {
           while ((charRead = isr.read(inputBuffer)) > 0) {
            String readString = String.copyValueOf(inputBuffer, 0, charRead);
            str += readString;
            inputBuffer = new char[BUFFER_SIZE];
           }
           in.close();
          } catch (IOException e) {
           // Handle Exception
           e.printStackTrace();
           return "";
          }
          return str;
         }

         private InputStream OpenHttpConnection(String url) throws IOException {
          InputStream in = null;
          int response = -1;
          URL url1 = new URL(url);
          URLConnection conn = url1.openConnection();
          if (!(conn instanceof HttpURLConnection))
           throw new IOException("Not An Http Connection");
          try {
           HttpURLConnection httpconn = (HttpURLConnection) conn;
           httpconn.setAllowUserInteraction(false);
           httpconn.setInstanceFollowRedirects(true);
           httpconn.setRequestMethod("GET");
           httpconn.connect();
           response = httpconn.getResponseCode();
           if (response == HttpURLConnection.HTTP_OK) {
            in = httpconn.getInputStream();
           }
          } catch (Exception e) {
           throw new IOException("Error connecting2");
          }
          return in;
         }
}
7. Berikut isi Script pada Pakaian.java untuk IP nya sesuaikan dengan IP jaringan yang didapat misal jika IP komputer 192.168.43.94 maka isikan juga di project IP 192.168.43.94

package com.pakaian.pakaian;
public class Pakaian extends Koneksi {
     String URL = "http://192.168.43.94/pakaian/server.php";
     String url = "";
     String response = "";

     public String tampilPakaian() {
      try {
       url = URL + "?operasi=view";
       System.out.println("URL Tampil Pakaian: " + url);
       response = call(url);
      } catch (Exception e) {
      }
      return response;
     }

     public String inserPakaian(String merk, String jenis,String ukuran, String harga) {
      try {
       url = URL + "?operasi=insert&merk=" + merk + "&jenis=" + jenis+ "&ukuran=" + ukuran+ "&harga=" + harga;
       System.out.println("URL Insert Pakaian : " + url);
       response = call(url);
      } catch (Exception e) {
      }
      return response;
     }

     public String getPakaianById(int id) {
      try {
       url = URL + "?operasi=get_pakaian_by_id&id=" + id;
       System.out.println("URL Insert Pakaian : " + url);
       response = call(url);
      } catch (Exception e) {
      }
      return response;
     }

     public String updatePakaian(String id, String merk, String jenis, String ukuran, String harga) {
      try {
       url = URL + "?operasi=update&id=" + id + "&merk=" + merk + "&jenis=" + jenis + "&ukuran=" + ukuran + "&harga=" + harga;
       System.out.println("URL Insert Biodata : " + url);
       response = call(url);
      } catch (Exception e) {
      }
      return response;
     }

     public String deletePakaian(int id) {
      try {
       url = URL + "?operasi=delete&id=" + id;
       System.out.println("URL Insert Pakaian : " + url);
       response = call(url);
      } catch (Exception e) {
      }
      return response;
     }

    }
8.  Berikut isi Script pada MainActivity.java

package com.examplore.deathnote;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.examplore.deathnote.MainActivity;
import com.examplore.deathnote.Pakaian;
import com.examplore.deathnote.R;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.view.ViewPager.LayoutParams;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

     Pakaian pakaian = new Pakaian();
     TableLayout tabelPakaian;

     Button buttonTambahPakaian;
     ArrayList<Button> buttonEdit = new ArrayList<Button>();
     ArrayList<Button> buttonDelete = new ArrayList<Button>();

     JSONArray arrayPakaian;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (android.os.Build.VERSION.SDK_INT > 9) {
              StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
              StrictMode.setThreadPolicy(policy);
             }
        //pengenalan variabel
        tabelPakaian = (TableLayout) findViewById(R.id.tablePakaian);
          buttonTambahPakaian = (Button) findViewById(R.id.buttonTambahPakaian);
          buttonTambahPakaian.setOnClickListener(this);

          TableRow barisTabel = new TableRow(this);
          barisTabel.setBackgroundColor(Color.CYAN);

          TextView viewHeaderId = new TextView(this);
          TextView viewHeaderMerk = new TextView(this);
          TextView viewHeaderJenis = new TextView(this);
          TextView viewHeaderUkuran = new TextView(this);
          TextView viewHeaderHarga = new TextView(this);
          TextView viewHeaderAction = new TextView(this);

          viewHeaderId.setText("ID");
          viewHeaderMerk.setText("Merk");
          viewHeaderJenis.setText("Jenis");
          viewHeaderUkuran.setText("Ukuran");
          viewHeaderHarga.setText("Harga");
          viewHeaderAction.setText("Action");

          viewHeaderId.setPadding(5, 1, 5, 1);
          viewHeaderMerk.setPadding(5, 1, 5, 1);
          viewHeaderJenis.setPadding(5, 1, 5, 1);
          viewHeaderUkuran.setPadding(5, 1, 5, 1);
          viewHeaderHarga.setPadding(5, 1, 5, 1);
          viewHeaderAction.setPadding(5, 1, 5, 1);

          barisTabel.addView(viewHeaderId);
          barisTabel.addView(viewHeaderMerk);
          barisTabel.addView(viewHeaderJenis);
          barisTabel.addView(viewHeaderUkuran);
          barisTabel.addView(viewHeaderHarga);
          barisTabel.addView(viewHeaderAction);

          tabelPakaian.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));

          try {

           arrayPakaian = new JSONArray(pakaian.tampilPakaian());

           for (int i = 0; i < arrayPakaian.length(); i++) {
            JSONObject jsonChildNode = arrayPakaian.getJSONObject(i);
            String merk = jsonChildNode.optString("merk");
            String jenis = jsonChildNode.optString("jenis");
            String ukuran = jsonChildNode.optString("ukuran");
            String harga = jsonChildNode.optString("harga");
            String id = jsonChildNode.optString("id");

            System.out.println("Merk :" + merk);
            System.out.println("Jenis :" + jenis);
            System.out.println("Ukuran :" + ukuran);
            System.out.println("Harga :" + harga);
            System.out.println("ID :" + id);

            barisTabel = new TableRow(this);

            if (i % 2 == 0) {
             barisTabel.setBackgroundColor(Color.LTGRAY);
            }

            TextView viewId = new TextView(this);
            viewId.setText(id);
            viewId.setPadding(5, 1, 5, 1);
            barisTabel.addView(viewId);

            TextView viewMerk = new TextView(this);
            viewMerk.setText(merk);
            viewMerk.setPadding(5, 1, 5, 1);
            barisTabel.addView(viewMerk);

            TextView viewJenis = new TextView(this);
            viewJenis.setText(jenis);
            viewJenis.setPadding(5, 1, 5, 1);
            barisTabel.addView(viewJenis);
           
            TextView viewUkuran = new TextView(this);
            viewUkuran.setText(ukuran);
            viewUkuran.setPadding(5, 1, 5, 1);
            barisTabel.addView(viewUkuran);
           
            TextView viewHarga = new TextView(this);
            viewHarga.setText(harga);
            viewHarga.setPadding(5, 1, 5, 1);
            barisTabel.addView(viewHarga);

            buttonEdit.add(i, new Button(this));
            buttonEdit.get(i).setId(Integer.parseInt(id));
            buttonEdit.get(i).setTag("Edit");
            buttonEdit.get(i).setText("Edit");
            buttonEdit.get(i).setOnClickListener(this);
            barisTabel.addView(buttonEdit.get(i));

            buttonDelete.add(i, new Button(this));
            buttonDelete.get(i).setId(Integer.parseInt(id));
            buttonDelete.get(i).setTag("Delete");
            buttonDelete.get(i).setText("Delete");
            buttonDelete.get(i).setOnClickListener(this);
            barisTabel.addView(buttonDelete.get(i));

            tabelPakaian.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT,
              LayoutParams.MATCH_PARENT));
           }
          } catch (JSONException e) {
           e.printStackTrace();
          }
         }

         public void onClick(View view) {

          if (view.getId() == R.id.buttonTambahPakaian) {
           // Toast.makeText(MainActivity.this, "Button Tambah Data",
           // Toast.LENGTH_SHORT).show();

           tambahPakaian();

          } else {
           /*
            * Melakukan pengecekan pada data array, agar sesuai dengan index
            * masing-masing button
            */
           for (int i = 0; i < buttonEdit.size(); i++) {

            /* jika yang diklik adalah button edit */
            if (view.getId() == buttonEdit.get(i).getId() && view.getTag().toString().trim().equals("Edit")) {
             // Toast.makeText(MainActivity.this, "Edit : " +
             // buttonEdit.get(i).getId(), Toast.LENGTH_SHORT).show();
             int id = buttonEdit.get(i).getId();
             getDataByID(id);

            } /* jika yang diklik adalah button delete */
            else if (view.getId() == buttonDelete.get(i).getId() && view.getTag().toString().trim().equals("Delete")) {
             // Toast.makeText(MainActivity.this, "Delete : " +
             // buttonDelete.get(i).getId(), Toast.LENGTH_SHORT).show();
             int id = buttonDelete.get(i).getId();
             deletePakaian(id);

            }
           }
          }
         }

         public void deletePakaian(int id) {
          pakaian.deletePakaian(id);

          /* restart acrtivity */
          finish();
          startActivity(getIntent());

         }

         public void getDataByID(int id) {

          String merkEdit = null, jenisEdit = null, ukuranEdit = null, hargaEdit = null;
          JSONArray arrayPersonal;

          try {

           arrayPersonal = new JSONArray(pakaian.getPakaianById(id));

           for (int i = 0; i < arrayPersonal.length(); i++) {
            JSONObject jsonChildNode = arrayPersonal.getJSONObject(i);
            merkEdit = jsonChildNode.optString("merk");
            jenisEdit = jsonChildNode.optString("jenis");
            ukuranEdit = jsonChildNode.optString("ukuran");
           hargaEdit = jsonChildNode.optString("harga");
           }
          } catch (JSONException e) {
           e.printStackTrace();
          }

          LinearLayout layoutInput = new LinearLayout(this);
          layoutInput.setOrientation(LinearLayout.VERTICAL);

          // buat id tersembunyi di alertbuilder
          final TextView viewId = new TextView(this);
          viewId.setText(String.valueOf(id));
          viewId.setTextColor(Color.TRANSPARENT);
          layoutInput.addView(viewId);

          final EditText editMerk = new EditText(this);
          editMerk.setText(merkEdit);
          layoutInput.addView(editMerk);

          final EditText editJenis = new EditText(this);
          editJenis.setText(jenisEdit);
          layoutInput.addView(editJenis);
         
          final EditText editUkuran = new EditText(this);
          editUkuran.setText(ukuranEdit);
          layoutInput.addView(editUkuran);
         
          final EditText editHarga = new EditText(this);
          editHarga.setText(hargaEdit);
          layoutInput.addView(editHarga);

          AlertDialog.Builder builderEditPakaian = new AlertDialog.Builder(this);
          builderEditPakaian.setIcon(R.drawable.batagrams);
          builderEditPakaian.setTitle("Update Pakaian");
          builderEditPakaian.setView(layoutInput);
          builderEditPakaian.setPositiveButton("Update", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
            String merk = editMerk.getText().toString();
            String jenis = editJenis.getText().toString();
            String ukuran = editUkuran.getText().toString();
            String harga = editHarga.getText().toString();

            System.out.println("Merk : " + merk + " Jenis : " + jenis+ " Ukuran : " + ukuran+ " Harga : " + harga);

            String laporan = pakaian.updatePakaian(viewId.getText().toString(), editMerk.getText().toString(),
                    editJenis.getText().toString(),editUkuran.getText().toString(),  editHarga.getText().toString());

            Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();

            /* restart acrtivity */
            finish();
            startActivity(getIntent());
           }

          });

          builderEditPakaian.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
           }
          });
          builderEditPakaian.show();

         }

         public void tambahPakaian() {
          /* layout akan ditampilkan pada AlertDialog */
          LinearLayout layoutInput = new LinearLayout(this);
          layoutInput.setOrientation(LinearLayout.VERTICAL);

          final EditText editMerk = new EditText(this);
          editMerk.setHint("Merk");
          layoutInput.addView(editMerk);

          final EditText editJenis = new EditText(this);
          editJenis.setHint("Jenis");
          layoutInput.addView(editJenis);
         
          final EditText editUkuran = new EditText(this);
          editUkuran.setHint("Ukuran");
          layoutInput.addView(editUkuran);
         
          final EditText editHarga = new EditText(this);
          editHarga.setHint("Harga");
          layoutInput.addView(editHarga);

          AlertDialog.Builder builderInsertPakaian = new AlertDialog.Builder(this);
          builderInsertPakaian.setIcon(R.drawable.batagrams);
          builderInsertPakaian.setTitle("Insert Pakaian");
          builderInsertPakaian.setView(layoutInput);
          builderInsertPakaian.setPositiveButton("Insert", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
            String merk = editMerk.getText().toString();
            String jenis = editJenis.getText().toString();
            String ukuran = editUkuran.getText().toString();
            String harga = editHarga.getText().toString();

            System.out.println("Merk : " + merk + " Jenis : " + jenis+ " Ukuran : " + ukuran+ " Harga : " + harga);

            String laporan = pakaian.inserPakaian(merk, jenis, ukuran, harga);

            Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();

            /* restart acrtivity */
            finish();
            startActivity(getIntent());
           }

          });

          builderInsertPakaian.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
           }
          });
          builderInsertPakaian.show();
         }
}
Data yang diterima dari Biodata.java masih berupa String tetapi memiliki struktur JSON Encode. Dengan memasukkan String tersebut ke dalan JSONArray, maka otomatis data akan tersimpan didalam array. Tetapi perlu di ingat, bahwa data yang kita terima dari mysql adalah data berupa baris dan kolom

9. Selesai silahkan di Copas nanti kalau diketik takut error karena kepanjangan hehe

Pengujian :

1. Nyalakan Wifi / TheTering klo ga ada pokonya harus Wifi karena nantinya baik laptop sebagai tempat menyimpan database dan Android sebagai Client harus terhubung dengan IP yang sama ( misal laptop dan hp android terhubung wifikampus ). Misal IP laptop 192.168.43.94 masukkan dalam project pakaian.java

2. Nyalakan Xampp Apache dan MySQL cukup


3. Sambungkan kabel data pada HP Android ( dengan syarat driver sudah terinstall ) running project to HP Android misal ACER Z205

CRUD Android Dengan JSON dan MySQL

4. Selanjutnya lihat gambar dibawah

CRUD Android Dengan JSON dan MySQL
CRUD Android Dengan JSON dan MySQL
CRUD Android Dengan JSON dan MySQL

Download Project << database sama koneksi buat sendiri seperti file diatas

Demikian Postingan mengenai Tutorial membuat Aplikasi Android CRUD dengan JSON dan MySQL semoga bermanfaat, Ini bukan tutorial buat newbie yang baru mengenal android sebelumnya pelajari dahulu tentang JSON Array , CRUD android biasa , XML dll ini hanya tugas kuliah saya yang belum sempat di presentasikan . Semoga Bermanfaat.


Follw Blog Orang IT dan Like Fanspage saya helmykkediri jangan lupa sedianya Klik Iklan untuk Blog ini untuk biaya Admin beli Kuota untuk Up Date Blog


Terimakasih helmykkediri 


6 Responses to "CRUD Android Dengan JSON dan MySQL"

  1. Komentar ini telah dihapus oleh administrator blog.

    BalasHapus
  2. bah xampp bisa buat macem2 juga yak ini aja saya lagi belajar xampp, ohiya masukkan aja nih bagusan kalo dibikin tutornya itu pake video jadi lebih paham :)

    BalasHapus
  3. gan...kalo ane insert data yg mengandung spasi misal "batik[spasi]makasar" kok daa setelahnya(jenis,ukuran,harga) kosong ya? gimana solusinya?

    BalasHapus
  4. min sudah ku coba buat databasenya online. terus data gak tertampil tapi kalau input data masuk lansung di databasenya. tolong pencerahannya

    BalasHapus
  5. maaf min, ini kok gak bisa input dan ga bisa tampil ya, padahal sudah dibuat databasenya persis
    mohon jawabannya terima kasih

    BalasHapus
    Balasan
    1. bisa masuk database kagak , kalau bisa berarti tinggal nampilin doangkan cek nama variabelnya pastiin sama

      Hapus

Terimakasih sudah berkunjung ke Blog Orang IT , aturan berkomentar yang baik :

1. Dilarang mencantumkan berbagai macam link aktif dikomentar blog

2. Jika ingin mendapatkan backlink komen dengan name/url yang telah disediakan

3. Link download mati silahkan berkomentar

4. Postingan dirasa outdate atau sudah tidak berguna lagi komen saja jangan sungkan

5. Komentar yang memerlukan jawaban dari admin jangan menggunakan anonymous

6. Berkomentarlah dengan relevans dan tinggalkan jejak diblog saya

7. Klik iklan untuk biaya perawatan admin

Terimakasih sudah mentaati rules aturan berkomentar yang baik