Skip to content →

[Android] Olah Data MySQL Menggunakan HTTP Connection

HTTPConnection adalah kelas pada Java khususnya untuk pemrograman Android yang berfungsi untuk meng-koneksikan aplikasi Android ke server, dalam hal ini server yang digunakan menggunakan PHP. Sebelum kita lebih lanjut, mari lihat arsitekturnya dibawah ini

Dari gambar diatas, bisa kita lihat untuk mengolah data (Insert, Update, Delete) menggunakan MySQL, si Android tidak bisa langsung menuju ke MySQL. Namun, ia membutuhkan server dalam mengolah data. Jadi, si Android mengirimkan data ke PHP (Server) kemudian si server yang nanti akan mengirimkan data ke MySQL, atau sebaliknya.

Nah untuk meng-koneksi kan si Android ke server kita membutuhkan kelas HTTPConnection. Kita coba dulu yang Insert yaa… sebelum ke source code dibuat dulu databasenya.

Nama Database : db_lagu
Nama Tabel : playlist
Nama Kolom :
- id int(11) auto_increment primary key
- nama_penyanyi varchar(30)
- nama_lagu varchar(30)

Diisi jangan lupa. Nah lanjut ke Androidnya, buat tampilan seperti dibawah ini,

Sudah? Kalo sudah sekarang buat kelas baru,

KoneksiHTTP.java

public class KoneksiHTTP {
public static final int HTTP_TIMEOUT = 3000;
	private static HttpClient client;

	private static HttpClient getHttpClient() {
		if (client == null) {
			client = new DefaultHttpClient();
			final HttpParams parameterHttp = client.getParams();
			HttpConnectionParams.setConnectionTimeout(parameterHttp,
					HTTP_TIMEOUT);
			ConnManagerParams.setTimeout(parameterHttp, HTTP_TIMEOUT);
		}
		return client;
	}

	public static String eksekusiHttpPost(String url,
			ArrayList<NameValuePair> postParameter) throws Exception {
		BufferedReader in = null;

		try {
			HttpClient klien = getHttpClient();
			HttpPost req = new HttpPost(url);
			UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
					postParameter);
			req.setEntity(formEntity);
			HttpResponse resp = klien.execute(req);

			in = new BufferedReader(new InputStreamReader(resp.getEntity()
					.getContent()));
			StringBuffer stringBuff = new StringBuffer("");
			String line = "";
			String NL = System.getProperty("line.separator");
			while ((line = in.readLine()) != null) {
				stringBuff.append(line + NL);
			}
			in.close();
			String hasil = stringBuff.toString();
			return hasil;
		} finally {
			if (in != null) {
				in.close();
			}
		}
	}
}

Kalo sudah sekarang buat file PHP-nya.. kira-kira seperti dibawah ini

input.php

<?php
include 'koneksi.php';

$nama = $_REQUEST['nama'];
$lagu = $_REQUEST['lagu'];

$query = "INSERT INTO playlist(nama_penyanyi, nama_lagu) value('$nama','$lagu')";
mysql_query($query) or die('Data Gagal Disimpan');
echo 'Data Berhasil Disimpan!';
?>

Sudah?? Nah di Activity pada method aksi tombol ketikkan kode dibawah ini

ArrayList<NameValuePair> arData = new ArrayList<NameValuePair>();

arData.add(new BasicNameValuePair("nama", edNama.getText().toString()));
arData.add(new BasicNameValuePair("lagu", edLagu.getText().toString()));
String respon = null;

try {
	respon = KoneksiHTTP.eksekusiHttpPost(
		"http://10.0.2.2/playlist/input.php", arData);
	String r = respon.toString();
	r = r.trim();
	Toast.makeText(getBaseContext(), r.toString(), Toast.LENGTH_SHORT).show();
} catch (Exception e) {
	e.printStackTrace();
} finally {
	edNama.setText(null);
	edLagu.setText(null);
}

Selesai… Jadi begini…

Kita gunakan kelas ArrayList untuk menampung data yang akan kita kirimkan ke server. Source bawahnya kita ambil nilai dari edNama dan kita simpan ke String “nama” begitu pula dengan edLagu disimpan dalam String “lagu”, dan data tersebut disimpan dalam objek arData.

Kemudian pada source diatas ada URL kan? Nah URL tersebut adalah URL insert.php tadi. Jadi gampangannya arData dikirimkan ke URL tersebut. Oh iya, IP 10.0.2.2 adalah URL pengganti untuk localhost apabila menggunakan emulator.

Hal ini berlaku juga untuk Update dan Delete.. Silaken coba sendiri hahaha….

Published in Android Database

9 Comments

  1. mudz mudz

    error null setelah :
    respon = KoneksiHTTP.eksekusiHttpPost( “http://10.0.2.2/playlist/input.php”, arData);

    kenapa ya??

    • rioswarawan rioswarawan

      Kalo Null berarti dia gagal ngambil data, coba cek segala kemungkinan yang bakal terjadi
      1. Cek URL
      2. Cek hasil balikan URL, sesuai atau tidak hasil JSON-nya
      3. Cek variabel, sudah di instance apa belum

      Untuk mencobanya coba cek di Log sudah sesuai apa belum. Karena bisa jadi kesalahan di Client (Android) atau di Server (PHP)

  2. Basribaz Basribaz

    sangat membantu tutorialnya….
    bagaimana menyimpan data yang berupa radio group misalnya jenis kelamin pria dan wanita ke dalam database?
    thanks

    • rioswarawan rioswarawan

      terima kasih mas, semoga membantu yak haha… Mudah mas, di database bisa dibuat satu kolom dengan tipe data bit. Asumsikan apabila laki-laki bernilai 0 dan apabila perempuan bernilai 1. Nah di androidnya tinggal menyesuaikan.

  3. bagaimana jika apknya udah diinstal di hp beneran,..

    apakah url lokal hostnya harus diganti dengan ip komputer ?

    • rioswarawan rioswarawan

      Yup… URL kudu disesuaikan agar device Android dan server dapat terhubung. Entah localhost maupun web.
      Karena IP 10.0.2.2 hanya untuk device emulator dengan localhost.

  4. zaldhy zaldhy

    kenapa sudah saya coba mengikuti listing yang sodara ajarkan untuk membuat tampilan login knp tidak mau berpindah ahalamn ya..??

    • rioswarawan rioswarawan

      ada error atau semacamnya? ada 2 kemungkinan, gagal hit ke URL atau berhasil hit URL namun tidak ada perintah berpindahnya.

  5. Van Van

    Mas input Php dmn disimpan?

Leave a Reply

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