Koneksi Android ke Database MYSQL mengggunakan PHP JSON

Selama ini database bawaan android adalah Sqlite Database. Namun bagaimana jika kita memanfaatkan Mysql sebagai database dan PHP Sebagai Server side nya ?

Berikut tutorial koneksi Android ke Mysql dengan menggunakan server PHP.

Pertama buat database dulu di mysql, misalnya database dengan nama android.

Selanjutnya buat tabel dengan nama kontak dengan struktur tabel sebagai berikut :

CREATE TABLE kontak(
id_kontak int (2),
nama varchar (255),
PRIMARY KEY( id_kontak )
);

Lalu isi tabel dengan data sesuai yang diinginkan . Misal nya

Selanjut nya adalah membuat file PHP untuk dikoneksikan ke Mysql.

Buat file php dengan nama db_config.php dan isikan kode berikut :

<?php
	define('DB_SERVER',"localhost");
	define('DB_USER' , "root");
	define('DB_PASSWORD',"");
	define('DB_DATABASE',"android");
?>

Kode tersebut digunakan untuk komunikasi dengan database mysql. Setting username dan password sesuai dengan konfigurasi mysql anda.
Selanjutnya buat file php dengan nama db_connect.php dan isi sebagai berikut :

<?php
class DB_CONNECT{
    function __construct(){
    $this->connect();
}
function __destruct(){
   $this->close();
}
function connect(){
  //require_once __DIR__ .'/db_config.php';
  include "db_config.php";
  $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die (mysql_error());
  $db = mysql_select_db(DB_DATABASE) or die (mysql_error());
  return $con;
}
function close(){
   mysql_close();
 }
}
?>

Selanjutnya buat file php dengan nama bacaKontak.php, file ini digunakan untuk membaca semua data yang ada pada database mysql. isi file bacaKontak.php sebagai berikut :

<?php
  require_once __DIR__ .'/db_connect.php';
  $db = new DB_CONNECT();
  $select = mysql_query("SELECT * FROM kontak");

  while($value = mysql_fetch_assoc($select)){
    $output [] = $value;
  }
  print(json_encode($output));
?>

Nah sekarang tinggal buat file android nya.
Buat project android baru dengan struktur sebagai berikut :

7
Setelah selesai, maka akan ada file dengan ekstensi .java seperti berikut :
6

Buka file MainActivity.java dan isi dengan kode berikut :

package com.koneksimysql;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ArrayAdapter;

public class MainActivity extends ListActivity{
  String id;
  String[] nama;

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   String hasil = null;
   InputStream is = null;
   StringBuilder sb = null;

   try{
      HttpClient httpClient = new DefaultHttpClient();
      HttpPost httpPost = new HttpPost("http://10.0.2.2/android/bacaKontak.php");
      HttpResponse response = httpClient.execute(httpPost);
      HttpEntity entity = response.getEntity();
      is = entity.getContent();

    }catch(Exception e){
      Log.e("log_tag", "Error Http Connection");
   }
   try{
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
      sb = new StringBuilder();
      sb.append(reader.readLine()+"\n");
      String line = "0";
      while((line = reader.readLine()) != null){
         sb.append(line + "\n");
      }is.close();
      hasil = sb.toString();
   }catch(Exception e){
      Log.e("log_tag", "Error Converting result"+e.toString());
   }
   JSONArray jArray;
   try{
       jArray = new JSONArray(hasil);
       JSONObject jObject = null;
       nama = new String[jArray.length()];
       for(int i = 0; i<jArray.length(); i++){
       jObject = jArray.getJSONObject(i);
       nama[i] = jObject.getString("nama");
   }
   }catch(JSONException je){
       Toast.makeText(getBaseContext(), "No data Found",
       Toast.LENGTH_LONG).show();
   }
    catch (ParseException pe){
      pe.printStackTrace();
  }
     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nama));
     ListView lv;
     lv = getListView();
     lv.setTextFilterEnabled(true);
     lv.setOnItemClickListener(new OnItemClickListener(){

     @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
       // TODO Auto-generated method stub

    }

  });
 }
}

Dan terakhir, tambahkan code berikut di AndroidManifest.xml nya .

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

Hasil akhir nya nya sebagai berikut :

Semoga bermanfaat ! 🙂

12 thoughts on “Koneksi Android ke Database MYSQL mengggunakan PHP JSON

  1. Irma Rismayanti May 28, 2015 at 7:55 am Reply

    maaf mas, mau tanya. file phpnya di simpan di direktori xampp/htdocs kah? atau di direktori lain?

  2. ari September 9, 2015 at 5:52 am Reply

    ijin save page as dan copy paste mas…
    terimakasih banyak 🙂
    salam programer, ari 🙂

    • admin January 14, 2016 at 4:39 pm Reply

      Silahkan om 🙂
      Maaf jarang buka web. Entar deh update lebih banyak lagi, salam kenal juga 😀

  3. dozacrack May 29, 2016 at 10:17 pm Reply

    ListActivity nya gak ada :v

  4. samsularifin May 30, 2016 at 1:02 am Reply

    Udah tutorial lama itu om, andnroid 4.2. Mungkin kalau android terbaru udah deprecated. Saya belum nyoba android versi barunya 🙂

  5. […] PHP dan database Mysql. Artikel ini berkaitan erat dengan tutorial saya sebelumnya tentang koneksi android ke mysql.  Agar mempermudah pemahaman pembaca dalam tutorial ini, silahkan baca tutorial […]

  6. wildan August 1, 2016 at 9:00 am Reply

    yang ini HttpPost httpPost = new HttpPost(“http://10.0.2.2/android/bacaKontak.php”); maksudnya apa ya

    • samsularifin August 2, 2016 at 6:45 am Reply

      Manggil URL untuk baca data dengan method POST di mana 10.0.2.2 adalah IP localhost di android

      • SETYO AARI January 19, 2017 at 4:18 am

        maksudnya ip localhost di android bagaimana ya gan? soalnya ip ini saya rubah ke ip public saya, jadinya aplikasi tertutup sendiri terus,

  7. hananto January 18, 2017 at 8:45 am Reply

    saya pake android studio, mohon pencerahannya

Leave a comment