Hai, kawan-kawan kali ini saya akan
membuat tutorial CRUD (Create Read Update
Delete) Android dengan menggunakan database Mysql untuk perantaranya
menggunakan file php. Program yang saya buat adalah data produk dimana nantinya
kita bisa membuat(create), mengedit(Update), membaca(read), dan menghapus(delete)
data.
Sebelum saya mulai, ada yang perlu
kawan-kawan ketahui bahwa seringkali saat pembuatan program kita selalu salah
membedakan variable, nah mulai sekarang saya akan membedakan variable dari file
php dan kelas java yang ada di android, agar kawan-kawan bisa membedakan dan
belajar dengan lebih mudah.
Yosh
Langsung saja, pertama buat database terlebih dahulu, database = “crud_ar”
table=”produk” dengan field sebagai berikut :
Kedua
buatlah file php sebagai aksi CRUD, disini saya berinama aksi.php dengan kode sebagai berikut :
<?php
mysql_connect("localhost","root","");
mysql_select_db("crud_ar");
//database name
switch($_GET['a']){
case
"insert" :
$id = $_GET['kd'];
$nm = $_GET['nm'];
$hrg = $_GET['hrg'];
$des = $_GET['deskripsi'];
$result =
mysql_query("INSERT INTO produk(kd,nm,hrg,deskripsi)
VALUES('$id','$nm','$hrg','$des')");
if($result){
echo
"berhasil insert data";
}else{
echo
"nm".$nm;
}
break;
case
"update":
$kd = $_GET['kd'];
$nm = $_GET['nm'];
$hrg = $_GET['hrg'];
$des = $_GET['des'];
$result =
mysql_query("UPDATE produk SET nm='$nm' , hrg='$hrg', deskripsi='$des'
WHERE kd='$kd'");
if($result){
echo
"berhasil ubah data";
}else{
echo "gagal
ubah data";
}
break;
case
"delete":
$id = $_GET['kd'];
$result =
mysql_query("DELETE FROM produk WHERE kd='$id'");
if($result){
echo
"berhasil hapus data";
}else{
echo "gagal
hapus data";
}
break;
case
"read":
$kd=$_GET['kd'];
/* Source code untuk Menampilkan
Data */
$q = mysql_query("SELECT *
FROM produk where kd='$kd'");
$v = '{"data" : [';
while($r=mysql_fetch_array($q))
{
$ob =
array('"','<br>','</br>');
$v
.='{"kd" : "'.$r['kd'].'", "nm" :
"'.str_replace($ob,' ',strip_tags($r["nm"])).'","hrg"
: "'.str_replace($ob,' ',strip_tags($r["hrg"])). '","deskripsi" :
"'.str_replace($ob,' ',strip_tags($r["deskripsi"])).'"}';
}
$v .= ']}';
echo $v;
}
?>
Fungsi
dari kode di atas adalah untuk menerima request dari client kepada server.Ketiga
buatlah project Androidnya di Eclipse, seperti gambar dibawah ini :
Keterangan
project Android :
Project
name = prak_Crud
Package
Name = arum.jiyu.com
SDK
= Android 2.3.1 (min 9)
Keempat buat kelas
object Json (bagi yang belum tahu membuat
kelas object caranya : klik kanan package “arum.jiyu.com” >> New >>
Class >> isi (Name = JSONParser Superclass=java.lang.Object hilangkan centang pada “Inherited abstract methods”
>> Finish)), berikut SourceCode JSONParser.java
:
package arum.jiyu.com;
import
java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import
org.apache.http.client.ClientProtocolException;
import
org.apache.http.client.methods.HttpPost;
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 = "";
public JSONObject
AmbilJson(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);
}
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;
}
}
Kelima
buatlah layout seperti berikut, di main.xml :
Source
code main.xml :
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kode" >
</TextView>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/editKode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/btnCek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cek" />
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama" >
</TextView>
<EditText
android:id="@+id/editNama"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</EditText>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Harga" />
<EditText
android:id="@+id/editHarga"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Deskripsi" />
<EditText
android:id="@+id/editDes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.27"
android:inputType="textMultiLine" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/buttonInsert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="insert" >
</Button>
<Button
android:id="@+id/buttonUpdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="update">
</Button>
<Button
android:id="@+id/buttonDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="delete" >
</Button>
</LinearLayout>
</LinearLayout>
Keenam,
tulis source code di bawah ini di kelas Prak_CrudActivity.java
:
package arum.jiyu.com;
import
java.io.BufferedReader;
import java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import
org.apache.http.HttpResponse;
import
org.apache.http.client.HttpClient;
import
org.apache.http.client.methods.HttpGet;
import
org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import
org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
import android.widget.TextView;
import
android.widget.Toast;
public class Prak_CrudActivity extends Activity {
/** Called when the
activity is first created. */
private EditText kode, nama, harga, deskripsi;
private Button insert, update, delete, cek;
private String kode1, nama1, harga1, deskripsi1;
JSONArray
data = null;
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
kode = (EditText)
findViewById(R.id.editKode);
nama = (EditText)
findViewById(R.id.editNama);
harga = (EditText) findViewById(R.id.editHarga);
deskripsi = (EditText)
findViewById(R.id.editDes);
cek = (Button)
findViewById(R.id.btnCek);
insert = (Button)
findViewById(R.id.buttonInsert);
update = (Button)
findViewById(R.id.buttonUpdate);
delete = (Button) findViewById(R.id.buttonDelete);
insert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
String
url = "";
// karena saya
menggunakan Genymotion sebagai emulator
// jadi IP address
= 10.0.3.2 namun jika kawan
kawan
// menggunakan emulator bawaan eclipse
// silahkan gunakan
IP Address 10.0.2.2
url
= "http://10.0.3.2/crud/aksi.php";
try {
String
ko = URLEncoder.encode(kode.getText().toString(),
"utf-8");
String
n = URLEncoder.encode(nama.getText().toString(),
"utf-8");
String
hr = URLEncoder.encode(harga.getText().toString(),
"utf-8");
String
d = URLEncoder.encode(
deskripsi.getText().toString(), "utf-8");
url
+= "?a=insert&kd=" + ko + "&nm=" + n + "&hrg=" + hr
+
"&deskripsi=" + d;
getRequest(url);
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String
url = "";
// karena saya
menggunakan Genymotion sebagai emulator
// jadi IP address
= 10.0.3.2 namun jika kawan
kawan
// menggunakan emulator bawaan eclipse
// silahkan gunakan
IP Address 10.0.2.2
url = "http://10.0.3.2/crud/aksi.php";
try {
String
ko = URLEncoder.encode(kode.getText().toString(),
"utf-8");
String
n = URLEncoder.encode(nama.getText().toString(),
"utf-8");
String
hr = URLEncoder.encode(harga.getText().toString(),
"utf-8");
String
d = URLEncoder.encode(
deskripsi.getText().toString(),
"utf-8");
url
+= "?a=update&kd=" + ko + "&nm=" + n + "&hrg=" + hr
+
"&des=" + d;
getRequest(url);
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
String
url = "";
kode1 = kode.getText().toString();
url
= "http://10.0.3.2/crud/aksi.php?a=delete&kd="
+
kode1;
getRequest(url);
}
});
cek.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
kode1 = kode.getText().toString();
String
url = "http://10.0.3.2/crud/aksi.php?a=read&kd=" + kode1;
JSONParser
jParser = new JSONParser();
JSONObject
json = jParser.AmbilJson(url);
try {
data = json.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject
ar = data.getJSONObject(i);
String
kode_d = ar.getString("kd");
String
nama_d = ar.getString("nm");
String
harga_d = ar.getString("hrg");
String
des_d = ar.getString("deskripsi");
kode.setText(kode_d);
nama.setText(nama_d);
harga.setText(harga_d);
deskripsi.setText(des_d);
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public void getRequest(String
url) {
Toast.makeText(this, url, Toast.LENGTH_LONG).show();
HttpClient
client = new DefaultHttpClient();
HttpGet
request = new HttpGet(url);
try {
HttpResponse
response = client.execute(request);
Toast.makeText(this, request(response)
+ ":)",
Toast.LENGTH_SHORT).show();
}
catch (Exception ex) {
Toast.makeText(this, "data
gagal", Toast.LENGTH_SHORT).show();
}
}
public static String
request(HttpResponse reponse) {
String
result = "";
try {
InputStream
in = reponse.getEntity().getContent();
BufferedReader
reader = new BufferedReader(
new
InputStreamReader(in));
StringBuilder
str = new StringBuilder();
String
line = null;
while ((line =
reader.readLine()) != null) {
str.append(line
+ "\n");
}
in.close();
result
= str.toString();
}
catch (Exception e) {
result
= "Error";
}
return result;
}
}
Terakhir,
jangan lupa untuk menambah uses permission di AndroidManifest.xml sebagai berikut :
Jika sudah silahkan
jalankan maka hasilnya sebagai berikut :
Terima
kasih sudah berkunjung, semoga tutorial saya bermanfaat untuk kawan-kawan J
semangat !!
Untuk
download program dan tutorial silahkan klik menu DOWNLOAD