Contoh Program Sederhana Android Koneksi Dengan Database MySQL


Pagi semuanya, lama sudah ga posting di blog ini lagi🙂, harap maklum karena masih banyak kesibukan yang harus diselesaikan. Yap, kali ini aku mau coba berbagi mengenai bagaimana membuat sebuah program Android sederhana untuk menampilkan data yang diambil dari database MySQL. Dalam proses pengambilan data, akan melalui beberapa proses diantaranya Android melakukan request kepada server melalui script PHP dimana koneksi terjadi di script PHP tersebut.
Kemudian PHP akan membaca request dari Android dan memprosesnya untuk melakukan pengambilan data dari database, setelah itu jika data ditemukan akan dikirimkan kembali ke Android berupa data JSON. Di Activity Android-nya akan melakukan parsing data berupa JSON tersebut setelah itu tinggal proses terakhir, yaitu mengolah data yang sudah didapatkan. Entah itu ditampilkan pada layar atau sejenisnya. Yang pasti, disini saya akan memberikan contoh untuk menampilkan data mahasiswa yang datanya diambil dari database MySQL.
Pertama coba buat sebuah database dengan nama “test“, setelah itu buatlah sebuah tabel “mahasiswa” dengan struktur tabel sebagai berikut ini :

Struktur Tabel Android MySQL

Struktur Tabel Android MySQL

Kemudian, jika database dan tabel sudah siap langkah selanjutnya kita buat sebuah file PHP dengan nama “profil.php” yang berisi script seperti berikut ini :

// profil.php

mysql_connect("localhost", "root", "");
mysql_select_db("test");

// menerima request dari Android
$n = $_REQUEST['npm'];
$q = mysql_query("SELECT * FROM mahasiswa WHERE npm = '{$n}'");
$r = array();
$c = mysql_num_rows($q);
if($c>0){
	$r["account"] = array();
	while($e = mysql_fetch_array($q)){
		$a = array();
		$a["npm"] 			= $e["npm"];
		$a["nama_lengkap"] 	= $e["nama_lengkap"];
		$a["jurusan"] 		= $e["jurusan"];
		array_push($r["account"], $a);
	}
	$r["success"] = 1;
	// mengirimkan data JSON ke Android
	echo json_encode($r);
}else{
	$r["success"] = 0;
	echo json_encode($r);
}
mysql_close();

Setelah itu, buatlah sebuah Project Android yang berisikan 1 layout XML dan 2 class java, diantaranya adalah activity_main.xml, MainActivity.java dan JSONParser.java. Source code masing-masing file tersebut adalah sebagai berikut :

// activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="40dp"
        android:text="@string/tv_kode" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="20dp"
        android:text="@string/tv_nama" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="20dp"
        android:text="@string/tv_jurusan" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_toRightOf="@+id/textView2"
        android:text="@string/tv_fill"
        android:layout_marginLeft="80dp" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignLeft="@+id/textView4"
        android:text="@string/tv_fill" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView3"
        android:layout_alignLeft="@+id/textView4"
        android:text="@string/tv_fill" />

</RelativeLayout>
// strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Koneksi MySQL</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="tv_kode">NPM</string>
    <string name="tv_nama">Nama Lengkap</string>
    <string name="tv_jurusan">Jurusan</string>
    <string name="tv_fill">…</string>

</resources>
// MainActivity.java

package kreasi.garuda.koneksimysql;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.app.Activity;
import android.app.ProgressDialog;

public class MainActivity extends Activity {
	private TextView fill_1, fill_2, fill_3;
	private String [] fill_profile = new String[10];
	private String NPM = "06.2009.1.04900";

	JSONParser jParser = new JSONParser();
	ArrayList<HashMap<String, String>> accountsList;
	JSONArray accounts = null;

	// localhost = 10.0.2.2 (di emulator Android)
	private static String base_url = "http://10.0.2.2/profil.php";
	private static final String TAG_SUCCESS = "success";
	private static final String TAG_ACCOUNT = "account";

	private ProgressDialog pDialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		fill_1 = (TextView) findViewById(R.id.textView4);
		fill_2 = (TextView) findViewById(R.id.textView5);
		fill_3 = (TextView) findViewById(R.id.textView6);

		new LoadProfile().execute();
	}

	class LoadProfile extends AsyncTask<String, String, String> {
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			pDialog = new ProgressDialog(MainActivity.this);
			pDialog.setMessage("Retrieving data. Please wait...");
			pDialog.setIndeterminate(false);
			pDialog.setCancelable(false);
			pDialog.show();
		}

		protected String doInBackground(String... args) {
			List params = new ArrayList();
			params.add(new BasicNameValuePair("npm", NPM));
			JSONObject json = jParser.makeHttpRequest(base_url, "GET", params);
			Log.d("All Accounts: ", json.toString());
			try {
				int success = json.getInt(TAG_SUCCESS);
				if (success == 1) {
					accounts = json.getJSONArray(TAG_ACCOUNT);
					for (int i = 0; i < accounts.length(); i++) {
						JSONObject c = accounts.getJSONObject(i);
						fill_profile[0] = (c.getString("npm"));
						fill_profile[1] = (c.getString("nama_lengkap"));
						fill_profile[2] = (c.getString("jurusan"));
					}
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
			return null;
		}

		protected void onPostExecute(String file_url) {
			pDialog.dismiss();
			fill_1.setText(fill_profile[0]);
			fill_2.setText(fill_profile[1]);
			fill_3.setText(fill_profile[2]);
		}
	}
}
// JSONParser.java

package kreasi.garuda.koneksimysql;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
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 = "";

	// constructor
	public JSONParser() {

	}

	// function get json from url
	// by making HTTP POST or GET mehtod
	public JSONObject makeHttpRequest(String url, String method,
			List params) {

		// Making HTTP request
		try {

			// check for request method
			if(method == "POST"){
				// request method is POST
				// defaultHttpClient
				DefaultHttpClient httpClient = new DefaultHttpClient();
				HttpPost httpPost = new HttpPost(url);
				httpPost.setEntity(new UrlEncodedFormEntity(params));

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

			}else if(method == "GET"){
				// request method is GET
				DefaultHttpClient httpClient = new DefaultHttpClient();
				String paramString = URLEncodedUtils.format(params, "utf-8");
				url += "?" + paramString;
				HttpGet httpGet = new HttpGet(url);

				HttpResponse httpResponse = httpClient.execute(httpGet);
				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 parse the string to a JSON object
		try {
			jObj = new JSONObject(json);
		} catch (JSONException e) {
			Log.e("JSON Parser", "Error parsing data " + e.toString());
		}

		// return JSON String
		return jObj;

	}
}

Jangan lupa di bagian Manifest Projectnya, berikan permission untuk akses INTERNET. Setelah semua source dan settingan sesuai dengan server yang ada, coba di running aplikasinya, maka akan keluar tampilan seperti gambar dibawah ini :

Contoh Program Android Koneksi MySQL

Contoh Program Android Koneksi MySQL

Semoga berhasil untuk mencoba kawan-kawan🙂

22 thoughts on “Contoh Program Sederhana Android Koneksi Dengan Database MySQL

  1. // localhost = 10.0.2.2 (di emulator Android)
    private static String base_url = “http://10.0.2.2/profil.php”;
    // Omm klw file profil.php nya uda di upload ke server (internet) di ganti apa 10.0.2.2

  2. koq error?
    Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

  3. Mw nnya ne mas…
    kan buatnya di PC, trus klo mw install ke hpny bisa jga….????
    kan soalny pake file .php kan untuk koneksi databasenya….

Mari Berdiskusi Bersama

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s