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
ka kenapa ya muuncul pesan "data gagal" aja ?
BalasHapuskmu download source codenya atau buat praktek dr awal?
Hapustrimakasih tutorialnya gan.
BalasHapuskunjungi aplikasipbbonline.wordpress.com
kami penyedia aplikasi sistem informasi PBB Online:
-SIMPBB (Sistem Informasi Manajemen Pajak Bumi dan Bangunan)
-SIBPHTB (Sistem Informasi Bea Perolehan Hak Tanah dan Banguan)
-SIG (Sistem Informasi Geografis)
Informasi lebih lanjut hubungi www.aplikasipemda.com
brahmanto@cendana2000.co.id Telp. 089691540880
apakah ada cara lain selain menggunakan php?
BalasHapusSetau q tdk bs, soalnya blm prnh nyoba penghubung android dgn database pke bahasa pemrograman selain php, klo databasenya pake sqlite CRUD nya bs lngsung d kode class nya
Hapusapakah ada cara lain selain menggunakan php?
BalasHapusfile aksi.php nya taro di workplace apa dalam eclipse
BalasHapusAksi.php d taruh di dir xampp/htdocs/
BalasHapuskalo emulatornya hp sendiri, ip nya berapa ya ?
BalasHapusklo hp nya terkoneksi PC itu bisa dilihat dengan cara
Hapusadb shell
ifconfig eth0
--> ketikkan di CMD dan hasilnya bermacam-macam, tapi ip umumnya 10.0.2.15
tetapi jika tidak terkoneksi pada pc, maka databasenya harus di onlinekan terlebih dahulu
Saya coba di android studio DefaultHttpClient() atau httpClient kok gak di ketahui yah selalu resolved . . begitu juga dengan importnya
BalasHapusmasalah ini apa karena librarynya?
yup bnar sekali karena library nya, cb pake library volley :)
HapusSaya coba di android studio DefaultHttpClient() atau httpClient kok gak di ketahui yah selalu resolved . . begitu juga dengan importnya
BalasHapusmasalah ini apa karena librarynya?
mbak,mau nanya pada saat button cek di klik langsung force close lalu pada saat button insert di klik muncul pesan "data gagal",begitu juga dengan button update dan delete
BalasHapusmohon pencerahannya :)
mbb, semua pengkodean butuh ketelitian, cb mbak kode nya di cek mungkin ada yg krg, kalau muncul pesan "data gagal" biasanya karena tidka terhubung dengan file aksi.php nya
Hapusmbak source codenya gabisa didownload mba, mohon re-upload
BalasHapusmakasih
mohon maaf mas, akun saya terhapus oleh ziddu, sedangkan data projectnya ada di sana, untuk sementara bisa gunakan tutorial .pdf nya
Hapusmuncul eror kalau dijalankan"your project contains error(s),please fix then before running your apllication"
BalasHapusitu eror karena kekurangan library apa?
apakah penulisan kode nya sdh benar dan sesuai tutorial? dan mas joko menggunakan IDE apa? android studio atau eclipse
Hapusterimakasih toturial moga saja tidak eror :)
BalasHapusprogram linknya error untuk download Aplikasi CRUD, Android - MYSQL . bisa kirim link yang benar ? mohon konfirmasinya
BalasHapusmohon maaf mbak bisa ikuti atau download tutorial *.pdf, untuk sementara ikuti tutorial yang ada dulu mbak, karena akun sya di ziddu terhapus, sedangkan project nya ada di sana, saya juga masih blm sempet buat lagi, kalau sempat saya akan buat lagi dan reupload
Hapuspesannya "data gagal" terus gan ketika insert data, masalahnya apa ya gan?
BalasHapustidak terhubung dengan file aksi.php
Hapuscoba di cek kembali mas
mantap mbak, terima kasih banyak atas ilmunya :D
BalasHapusapa sudah sukses
Hapusrunnigy
KOK EROOR YA
BalasHapusgmana
kok gagal data
cek data force close
pencerahanya tolong gun
plis
cek kembali kode aksi.php dan kode android nya
Hapuskak bisa kirim link download programnya
BalasHapusHalo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur
BalasHapuswah akhirnya ad web yang bisa membantu saya dalam hal membuat wordpress, artikelnya menarik dan memanjakan mata untuk di baca
BalasHapusperkenalkan nama saya Titannia yulanda NIM 1822500065 dari ISB Atma Luhur