Skip to content →

[Android] Menampilkan Database MySQL Menggunakan JSON

Apa itu JSON..?? JSON adalah singkatan dari JavaScript Object Notation. Merupakan format tertentu untuk pertukaran data, lebih lengkapnya Googling ato Yahooing aja yak! Jadi pada dasarnya JSON adalah bentuk Array yang berada di dalam Array. Nah disini JSON kita manfaatkan untuk mempermudah pengambilan data pada database MySQL. Sebenarnya menggunakan HTTPConnection seperti pada postingan saya yang lalu pun bisa, oke untuk data yang hanya satu atau dua kolom. Nah kalo data yang diambil lebih dari itu cukup susah juga soalnya kita perlu memecah String menjadi data satuan.

Masih menggunakan data disini

Kemudian kita masih membuat file php untuk menampilkan isi database kira2 seperti ini

tampil.php

<?php
 include 'koneksi.php';

$response = array();
$result = mysql_query("SELECT * FROM playlist") or die(mysql_error());

$response["playlist"] = array();
while ($row = mysql_fetch_array($result)) {
    $pl = array();
    $pl["id"] = $row["id"];
    $pl["nama"] = $row["nama_penyanyi"];
    $pl["judul"] = $row["nama_lagu"];
    array_push($response["playlist"], $pl);
}
echo json_encode($response);

?>

Kemudian buat tampilan seperti dibawah ini

Untuk tampilan list bisa dibaca disini, kemudian buat kelas baru

MyJSON.java

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

    public MyJSON() {}

    public JSONObject getJSONFromUrl(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 + "\n");
            }
            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;
    }
}

Terakhir di Java-nya, untuk menampilkannya begindang kodenya

url = "http://10.0.2.2/playlist/tampil.php";
final String TAG_PLAYLIST = "playlist";
final String TAG_ID = "id";
final String TAG_NAMA = "nama";
final String TAG_PENYANYI = "penyanyi";

MyJSON myJSON = new MyJSON();
JSONObject jURL = myJSON.getJSONFromUrl(url);
ArrayList<HashMap<String, String>> playlist = new ArrayList<HashMap<String, String>>();

try {
	jArray = jURL.getJSONArray(TAG_PLAYLIST);
	for (int i = 0; i < jArray.length(); i++) {
		JSONObject job = jArray.getJSONObject(i);
			String id = job.getString("id");
		String nama = job.getString("nama");
		String penyanyi = job.getString("penyanyi");				

		HashMap<String, String> hash = new HashMap<String, String>();
		hash.put(TAG_ID, id);
		hash.put(TAG_NAMA, nama);
		hash.put(TAG_PENYANYI, penyanyi);

		playlist.add(hash);
	}
} catch (JSONException e) {
	e.printStackTrace();
}

Nah tinggal diambil nilainya berdasarkan String yang ada di TAG_ID, TAG_NAMA, dan TAG_PENYANYI dan masukin ke listnya. Untuk isi file activity lengkapnya ada dibawah ini :

public class TampilDataActivity extends ListActivity {

private static String url = "http://10.0.2.2/playlist/tampil.php";
private static final String TAG_PLAYLIST = "playlist";
private static final String TAG_ID = "id";
private static final String TAG_NAMA = "nama";
private static final String TAG_PENYANYI = "penyanyi";
private MyJSON myJSON;
private JSONObject jURL;
private JSONArray jArray;

private HashMap<String, String> hash;
private ListAdapter adapter;
private ArrayList<HashMap<String, String>> playlist;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.tampil_data);
	myJSON = new MyJSON();
	jURL = myJSON.getJSONFromUrl(url);
	playlist = new ArrayList<HashMap<String, String>>();
	try {
		jArray = jURL.getJSONArray(TAG_PLAYLIST);
		for (int i = 0; i < jArray.length(); i++) {
			JSONObject job = jArray.getJSONObject(i);
			String id = job.getString("id");
			String nama = job.getString("nama");
			String penyanyi = job.getString("penyanyi");				

			hash = new HashMap<String, String>();
			hash.put(TAG_ID, id);
			hash.put(TAG_NAMA, nama);
			hash.put(TAG_PENYANYI, penyanyi);

			playlist.add(hash);
		}
	} catch (JSONException e) {
		e.printStackTrace();
	} finally {
		setList();
	}
}

private void setList() {
	adapter = new SimpleAdapter(this, playlist, R.layout.list_item,
			new String[] { TAG_ID, TAG_NAMA, TAG_PENYANYI }, new int[] {
			R.id.id, R.id.nama, R.id.penyanyi });
	setListAdapter(adapter);
}
}

Yahh kira-kira begini… Monggo kalo bingung bisa chat saya, sori buru-buru… kebelet bos!!!

Nih kalo mau file lengkapnya….

notes

Published in Android Database

17 Comments

  1. pungky pungky

    ini nampilin datanya ke listview ya ms rio…

    klo mw nampilin ke text area gmn ya…

    sory newbie..

    • rioswarawan rioswarawan

      sama aja mas. cuma di source code diatas untuk dapetin data json kan pake job.getString(…) nah tinggal gimana cara nge-set text ke text area..

  2. mudz mudz

    Error mas, pas lihat data close Unfortunately, Demo HTTP has stopped..
    Simpan data juga gagal, null array

    Saya coba di Eclipse Juno..

  3. gan mau tanya semisalkan itu ada button jika diklik muncul database kita dari sqlite itu gmna yah gan.. sepeti asal klik aja biar tidak bnyak activity di java πŸ˜€

    • rioswarawan rioswarawan

      untuk sqlite ada di artikel saya, coba deh search. Tinggal dimodifikasi disesuaikan kebutuhannya aja.

  4. eriq eriq

    mas rio klo waktu run terus muncul error android.view.windowleaked itu masalanya kenapa?

    • rioswarawan rioswarawan

      seharusnya ada di google bang.. coba deh

  5. alias alias

    ini kalo di jalankan di android 2.3 ke atas error gan .. ga ada asynctask nya soalnya

    • rioswarawan rioswarawan

      sebenarnya bukan masalah asynctask. asynctask cuma agar proses diatas berjalan asyncronous. berarti ada kesalahan ketika developmentnya.

  6. Millah Millah

    mas, mau tanya yaa.. itu file phpnya di tarus di folder htdogs kah?

    • rioswarawan rioswarawan

      hahahaa…. iya htdocs

  7. dhani dhani

    mas mau tanya, url = “http://10.0.2.2/playlist/tampil.php”;
    boleh di jabarin ngak?
    playlist itu folder yang dalemnya ada tampil.php ya?
    terus 10.0.2.2 itu url bebas atau ?

  8. Alwi hafiz Alwi hafiz

    mas kok link download nya sudah gk bisa mas. bisa minta link yg masih bisa gk mas. terima kasih

  9. Arrosi Arrosi

    Mas, linknya ngak bisa.
    Tolong diperbaiki mas

  10. mr. blue mr. blue

    gan link download nya mati nih,,,…???

  11. nah ini dia dari kmarin cari tutor indo tentang parse json android…
    thanks banget bro…

    req donk klo bole cara tampiliin listview pake library volley sob..

    kebanyakan gogling bahasa inggris..Y,Y

    maklum biasa makan pete sama jengki πŸ™‚

  12. Isa Isa

    Link tidak berlaku.

Leave a Reply

Your email address will not be published. Required fields are marked *