Anda di halaman 1dari 7

Contoh Program Sederhana Android Koneksi Dengan Database MySQL

Posted on March 11, 2013 by Rendra Kurniawan

3 Votes

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 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 <string <string <string <string <string <string name="app_name">Koneksi MySQL</string> name="hello_world">Hello world!</string> name="menu_settings">Settings</string> name="tv_kode">NPM</string> name="tv_nama">Nama Lengkap</string> name="tv_jurusan">Jurusan</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 import import import import import import import import import import org.apache.http.NameValuePair; org.apache.http.message.BasicNameValuePair; org.json.JSONArray; org.json.JSONException; org.json.JSONObject; android.os.AsyncTask; android.os.Bundle; android.util.Log; android.widget.TextView; android.app.Activity; 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 = private static private static private static 10.0.2.2 (di emulator Android) String base_url = "http://10.0.2.2/profil.php"; final String TAG_SUCCESS = "success"; 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 import import import import import import import import import import import import import import import import java.io.BufferedReader; java.io.IOException; java.io.InputStream; java.io.InputStreamReader; java.io.UnsupportedEncodingException; java.util.List; org.apache.http.HttpEntity; org.apache.http.HttpResponse; org.apache.http.NameValuePair; org.apache.http.client.ClientProtocolException; org.apache.http.client.entity.UrlEncodedFormEntity; org.apache.http.client.methods.HttpGet; org.apache.http.client.methods.HttpPost; org.apache.http.client.utils.URLEncodedUtils; org.apache.http.impl.client.DefaultHttpClient; org.json.JSONException; 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