TUTORIAL ANDROID MEMBUAT CRUD DENGAN JASON DAN DATABASE MYSQL
Selamat Datang di Blog Orang IT . Postingan saya sebelumnya mengenai Cara Ampuh Mempercepat Download IDM Terbaru selanjutnya postingan kali ini adalah Tutorial Membuat Aplikasi CRUD Android dengan JSON dan MySQL . Aplikasi ini dibuat dengan Software Eclipse versi Luna dan untuk server DataBasenya menggunakan Xampp silahkan yang belum punya Softwarenya bisa browsing di google.
Hari ini adalah tugas presentasi Mata Kuliah Pemrograman Jaringan , karena sudah capek-capek membuat progran CRUD ( Create , Update , Delete, Read ) sederhana tentang penjualan Pakaian . Namun karena kelompok saya tidak presentasi didepan kelas karena ada alasan tertentu , dari pada Project buatan saya sia-sia saya terpikir untuk share saja di Blog mungkin akan ditemukan beberapa orang yang mengalami tugas yang sama atau sekedar mencari referensi. ( true story )
Soal Android :
1. Buatlah Aplikasi Web Service Android yang dapat melakukan proses CRUD ( Tambah, Edit, Hapus, Delete ) pada Database MySQL dengan menggunakan Parsing JSON atau XML ( saya pakai JSON )Ketentuan :
1. Database saya menggunakan XAMPP2. Web Service juga XAMPP
3. Android Client saya menggunakan HP Android saya untuk menjalankan Aplikasi nya
Bahan :
1. Software Ecipse versi Luna untuk membuat Aplikasi2. Web Server dan DataBase menggunakan XAMPP
3. HP Android sebagai Client
Tutorial :
1. Buat DataBase MySQL dengan nama pakaian dan tabel db_pakaian dengan isi field id, merk , jenis, ukuran dan harga tipe data varchar kecuali id bertipe data integer dan primary2. Buat file PHP yang digunakan untuk mengubah file DataBase MySQL sesuai dengan permintaan CLient , silahkan masuk Folder C:\xampp\htdocs\pakaian dan buat file server.php pada file tersebut berisi script tambah , edit , hapus , lihat data seperti biasanya
<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "pakaian";
mysql_connect($server, $username, $password) or die("<h1>Koneksi Mysql Error :</h1>" . mysql_error());
mysql_select_db($database) or die("<h1>Koneksi Kedatabase Error : </h1>" .mysql_error());
@$operasi = $_GET['operasi'];
switch ($operasi) {
case "view":
$query_tampil_pakaian = mysql_query("SELECT * FROM db_pakaian")or die(mysql_error());
$data_array = array();
while ($data = mysql_fetch_assoc($query_tampil_pakaian)) {
$data_array[] = $data;
}
echo json_encode($data_array);
break;
case "insert":
/* Source code untuk Insert data */
@$merk = $_GET['merk'];
@$jenis = $_GET['jenis'];
@$ukuran = $_GET['ukuran'];
@$harga = $_GET['harga'];
$query_insert_data = mysql_query("INSERT INTO db_pakaian(merk, jenis, ukuran, harga) VALUES('$merk', '$jenis', '$ukuran', '$harga')");
if ($query_insert_data) {
echo "Data Berhasil Disimpan";
} else {
echo "Error Insert Pakaian " . mysql_error();
}
break;
case "get_pakaian_by_id":
@$id = $_GET['id'];
$query_tampil_pakaian = mysql_query("SELECT * FROM db_pakaianWHERE id='$id'"
) or die(mysql_error());
$data_array = array();
$data_array = mysql_fetch_assoc($query_tampil_pakaian);
echo "[" . json_encode($data_array) . "]";
break;
case "update":
/* Source code untuk Update Biodata */
@$merk = $_GET['merk'];
@$jenis = $_GET['jenis'];
@$ukuran = $_GET['ukuran'];
@$harga = $_GET['harga'];
@$id = $_GET['id'];
$query_update_pakaian = mysql_query("UPDATE db_pakaian SET merk='$merk',jenis='$jenis' , ukuran='$ukuran',harga='$harga' WHERE id='$id'");
if ($query_update_pakaian) {
echo "Update Data Berhasil";
} else {
echo mysql_error();
}
break;
case "delete":
/* Source code untuk Delete Biodata */
@$id = $_GET['id'];
$query_delete_pakaian = mysql_query("DELETE FROM db_pakaian WHEREid='$id'");
if ($query_delete_pakaian) {
echo "Delete Data Berhasil";
} else {
echo mysql_error();
}
break;
default:
break;
}
?>
3. Buka Software Eclipse buat new project dengan nama pakaian , kemudian pada bagian src buat 3 kelas yaitu MainActivity.java , Koneksi.Java , Pakaian.java dan di bagian res - layout ada file tampilan dengan format xml
4. Sebelumnya buka AndroidManifest.xml ( filenya ada dibawah sendiri ) kemudian tambahkan
<uses-permission android:name="android.permission.INTERNET" />
untuk memperbolehkan akses internet menjadi
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jhohannes.purba"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="jhohannes.purba.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
5. Buka res - Layout - Activity_main.xml isikan Script berikut ini< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.examplore.deathnote.MainActivity" >
<Button
android:id="@+id/buttonTambahPakaian"
android:layout_width="186dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Tambah Pakaian" />
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ScrollView
android:id="@+id/verticalScrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TableLayout
android:id="@+id/tablePakaian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" >
</TableLayout>
</ScrollView>
</HorizontalScrollView>
</LinearLayout>
Pada layout saya membuat TableLayout berada pada VerticalScrollView di dalamScrollView, ini berfungsi agar data yang memiliki lebar lebih dari ukuran layar secara otomoatis terscroll sehingga data semua bisa kelihatan.
6. Berikut isi Script pada Koneksi.java
package com.examplore.deathnote;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class Koneksi {
public String call(String url) {
int BUFFER_SIZE = 2000;
InputStream in = null;
try {
in = OpenHttpConnection(url);
} catch (IOException e) {
e.printStackTrace();
return "";
}
InputStreamReader isr = new InputStreamReader(in);
int charRead;
String str = "";
char[] inputBuffer = new char[BUFFER_SIZE];
try {
while ((charRead = isr.read(inputBuffer)) > 0) {
String readString = String.copyValueOf(inputBuffer, 0, charRead);
str += readString;
inputBuffer = new char[BUFFER_SIZE];
}
in.close();
} catch (IOException e) {
// Handle Exception
e.printStackTrace();
return "";
}
return str;
}
private InputStream OpenHttpConnection(String url) throws IOException {
InputStream in = null;
int response = -1;
URL url1 = new URL(url);
URLConnection conn = url1.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not An Http Connection");
try {
HttpURLConnection httpconn = (HttpURLConnection) conn;
httpconn.setAllowUserInteraction(false);
httpconn.setInstanceFollowRedirects(true);
httpconn.setRequestMethod("GET");
httpconn.connect();
response = httpconn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpconn.getInputStream();
}
} catch (Exception e) {
throw new IOException("Error connecting2");
}
return in;
}
}
7. Berikut isi Script pada Pakaian.java untuk IP nya sesuaikan dengan IP jaringan yang didapat misal jika IP komputer 192.168.43.94 maka isikan juga di project IP 192.168.43.94
package com.pakaian.pakaian;8. Berikut isi Script pada MainActivity.java
public class Pakaian extends Koneksi {
String URL = "http://192.168.43.94/pakaian/server.php";
String url = "";
String response = "";
public String tampilPakaian() {
try {
url = URL + "?operasi=view";
System.out.println("URL Tampil Pakaian: " + url);
response = call(url);
} catch (Exception e) {
}
return response;
}
public String inserPakaian(String merk, String jenis,String ukuran, String harga) {
try {
url = URL + "?operasi=insert&merk=" + merk + "&jenis=" + jenis+ "&ukuran=" + ukuran+ "&harga=" + harga;
System.out.println("URL Insert Pakaian : " + url);
response = call(url);
} catch (Exception e) {
}
return response;
}
public String getPakaianById(int id) {
try {
url = URL + "?operasi=get_pakaian_by_id&id=" + id;
System.out.println("URL Insert Pakaian : " + url);
response = call(url);
} catch (Exception e) {
}
return response;
}
public String updatePakaian(String id, String merk, String jenis, String ukuran, String harga) {
try {
url = URL + "?operasi=update&id=" + id + "&merk=" + merk + "&jenis=" + jenis + "&ukuran=" + ukuran + "&harga=" + harga;
System.out.println("URL Insert Biodata : " + url);
response = call(url);
} catch (Exception e) {
}
return response;
}
public String deletePakaian(int id) {
try {
url = URL + "?operasi=delete&id=" + id;
System.out.println("URL Insert Pakaian : " + url);
response = call(url);
} catch (Exception e) {
}
return response;
}
}
package com.examplore.deathnote;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.examplore.deathnote.MainActivity;
import com.examplore.deathnote.Pakaian;
import com.examplore.deathnote.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.view.ViewPager.LayoutParams;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
Pakaian pakaian = new Pakaian();
TableLayout tabelPakaian;
Button buttonTambahPakaian;
ArrayList<Button> buttonEdit = new ArrayList<Button>();
ArrayList<Button> buttonDelete = new ArrayList<Button>();
JSONArray arrayPakaian;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
//pengenalan variabel
tabelPakaian = (TableLayout) findViewById(R.id.tablePakaian);
buttonTambahPakaian = (Button) findViewById(R.id.buttonTambahPakaian);
buttonTambahPakaian.setOnClickListener(this);
TableRow barisTabel = new TableRow(this);
barisTabel.setBackgroundColor(Color.CYAN);
TextView viewHeaderId = new TextView(this);
TextView viewHeaderMerk = new TextView(this);
TextView viewHeaderJenis = new TextView(this);
TextView viewHeaderUkuran = new TextView(this);
TextView viewHeaderHarga = new TextView(this);
TextView viewHeaderAction = new TextView(this);
viewHeaderId.setText("ID");
viewHeaderMerk.setText("Merk");
viewHeaderJenis.setText("Jenis");
viewHeaderUkuran.setText("Ukuran");
viewHeaderHarga.setText("Harga");
viewHeaderAction.setText("Action");
viewHeaderId.setPadding(5, 1, 5, 1);
viewHeaderMerk.setPadding(5, 1, 5, 1);
viewHeaderJenis.setPadding(5, 1, 5, 1);
viewHeaderUkuran.setPadding(5, 1, 5, 1);
viewHeaderHarga.setPadding(5, 1, 5, 1);
viewHeaderAction.setPadding(5, 1, 5, 1);
barisTabel.addView(viewHeaderId);
barisTabel.addView(viewHeaderMerk);
barisTabel.addView(viewHeaderJenis);
barisTabel.addView(viewHeaderUkuran);
barisTabel.addView(viewHeaderHarga);
barisTabel.addView(viewHeaderAction);
tabelPakaian.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
try {
arrayPakaian = new JSONArray(pakaian.tampilPakaian());
for (int i = 0; i < arrayPakaian.length(); i++) {
JSONObject jsonChildNode = arrayPakaian.getJSONObject(i);
String merk = jsonChildNode.optString("merk");
String jenis = jsonChildNode.optString("jenis");
String ukuran = jsonChildNode.optString("ukuran");
String harga = jsonChildNode.optString("harga");
String id = jsonChildNode.optString("id");
System.out.println("Merk :" + merk);
System.out.println("Jenis :" + jenis);
System.out.println("Ukuran :" + ukuran);
System.out.println("Harga :" + harga);
System.out.println("ID :" + id);
barisTabel = new TableRow(this);
if (i % 2 == 0) {
barisTabel.setBackgroundColor(Color.LTGRAY);
}
TextView viewId = new TextView(this);
viewId.setText(id);
viewId.setPadding(5, 1, 5, 1);
barisTabel.addView(viewId);
TextView viewMerk = new TextView(this);
viewMerk.setText(merk);
viewMerk.setPadding(5, 1, 5, 1);
barisTabel.addView(viewMerk);
TextView viewJenis = new TextView(this);
viewJenis.setText(jenis);
viewJenis.setPadding(5, 1, 5, 1);
barisTabel.addView(viewJenis);
TextView viewUkuran = new TextView(this);
viewUkuran.setText(ukuran);
viewUkuran.setPadding(5, 1, 5, 1);
barisTabel.addView(viewUkuran);
TextView viewHarga = new TextView(this);
viewHarga.setText(harga);
viewHarga.setPadding(5, 1, 5, 1);
barisTabel.addView(viewHarga);
buttonEdit.add(i, new Button(this));
buttonEdit.get(i).setId(Integer.parseInt(id));
buttonEdit.get(i).setTag("Edit");
buttonEdit.get(i).setText("Edit");
buttonEdit.get(i).setOnClickListener(this);
barisTabel.addView(buttonEdit.get(i));
buttonDelete.add(i, new Button(this));
buttonDelete.get(i).setId(Integer.parseInt(id));
buttonDelete.get(i).setTag("Delete");
buttonDelete.get(i).setText("Delete");
buttonDelete.get(i).setOnClickListener(this);
barisTabel.addView(buttonDelete.get(i));
tabelPakaian.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public void onClick(View view) {
if (view.getId() == R.id.buttonTambahPakaian) {
// Toast.makeText(MainActivity.this, "Button Tambah Data",
// Toast.LENGTH_SHORT).show();
tambahPakaian();
} else {
/*
* Melakukan pengecekan pada data array, agar sesuai dengan index
* masing-masing button
*/
for (int i = 0; i < buttonEdit.size(); i++) {
/* jika yang diklik adalah button edit */
if (view.getId() == buttonEdit.get(i).getId() && view.getTag().toString().trim().equals("Edit")) {
// Toast.makeText(MainActivity.this, "Edit : " +
// buttonEdit.get(i).getId(), Toast.LENGTH_SHORT).show();
int id = buttonEdit.get(i).getId();
getDataByID(id);
} /* jika yang diklik adalah button delete */
else if (view.getId() == buttonDelete.get(i).getId() && view.getTag().toString().trim().equals("Delete")) {
// Toast.makeText(MainActivity.this, "Delete : " +
// buttonDelete.get(i).getId(), Toast.LENGTH_SHORT).show();
int id = buttonDelete.get(i).getId();
deletePakaian(id);
}
}
}
}
public void deletePakaian(int id) {
pakaian.deletePakaian(id);
/* restart acrtivity */
finish();
startActivity(getIntent());
}
public void getDataByID(int id) {
String merkEdit = null, jenisEdit = null, ukuranEdit = null, hargaEdit = null;
JSONArray arrayPersonal;
try {
arrayPersonal = new JSONArray(pakaian.getPakaianById(id));
for (int i = 0; i < arrayPersonal.length(); i++) {
JSONObject jsonChildNode = arrayPersonal.getJSONObject(i);
merkEdit = jsonChildNode.optString("merk");
jenisEdit = jsonChildNode.optString("jenis");
ukuranEdit = jsonChildNode.optString("ukuran");
hargaEdit = jsonChildNode.optString("harga");
}
} catch (JSONException e) {
e.printStackTrace();
}
LinearLayout layoutInput = new LinearLayout(this);
layoutInput.setOrientation(LinearLayout.VERTICAL);
// buat id tersembunyi di alertbuilder
final TextView viewId = new TextView(this);
viewId.setText(String.valueOf(id));
viewId.setTextColor(Color.TRANSPARENT);
layoutInput.addView(viewId);
final EditText editMerk = new EditText(this);
editMerk.setText(merkEdit);
layoutInput.addView(editMerk);
final EditText editJenis = new EditText(this);
editJenis.setText(jenisEdit);
layoutInput.addView(editJenis);
final EditText editUkuran = new EditText(this);
editUkuran.setText(ukuranEdit);
layoutInput.addView(editUkuran);
final EditText editHarga = new EditText(this);
editHarga.setText(hargaEdit);
layoutInput.addView(editHarga);
AlertDialog.Builder builderEditPakaian = new AlertDialog.Builder(this);
builderEditPakaian.setIcon(R.drawable.batagrams);
builderEditPakaian.setTitle("Update Pakaian");
builderEditPakaian.setView(layoutInput);
builderEditPakaian.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String merk = editMerk.getText().toString();
String jenis = editJenis.getText().toString();
String ukuran = editUkuran.getText().toString();
String harga = editHarga.getText().toString();
System.out.println("Merk : " + merk + " Jenis : " + jenis+ " Ukuran : " + ukuran+ " Harga : " + harga);
String laporan = pakaian.updatePakaian(viewId.getText().toString(), editMerk.getText().toString(),
editJenis.getText().toString(),editUkuran.getText().toString(), editHarga.getText().toString());
Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();
/* restart acrtivity */
finish();
startActivity(getIntent());
}
});
builderEditPakaian.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builderEditPakaian.show();
}
public void tambahPakaian() {
/* layout akan ditampilkan pada AlertDialog */
LinearLayout layoutInput = new LinearLayout(this);
layoutInput.setOrientation(LinearLayout.VERTICAL);
final EditText editMerk = new EditText(this);
editMerk.setHint("Merk");
layoutInput.addView(editMerk);
final EditText editJenis = new EditText(this);
editJenis.setHint("Jenis");
layoutInput.addView(editJenis);
final EditText editUkuran = new EditText(this);
editUkuran.setHint("Ukuran");
layoutInput.addView(editUkuran);
final EditText editHarga = new EditText(this);
editHarga.setHint("Harga");
layoutInput.addView(editHarga);
AlertDialog.Builder builderInsertPakaian = new AlertDialog.Builder(this);
builderInsertPakaian.setIcon(R.drawable.batagrams);
builderInsertPakaian.setTitle("Insert Pakaian");
builderInsertPakaian.setView(layoutInput);
builderInsertPakaian.setPositiveButton("Insert", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String merk = editMerk.getText().toString();
String jenis = editJenis.getText().toString();
String ukuran = editUkuran.getText().toString();
String harga = editHarga.getText().toString();
System.out.println("Merk : " + merk + " Jenis : " + jenis+ " Ukuran : " + ukuran+ " Harga : " + harga);
String laporan = pakaian.inserPakaian(merk, jenis, ukuran, harga);
Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();
/* restart acrtivity */
finish();
startActivity(getIntent());
}
});
builderInsertPakaian.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builderInsertPakaian.show();
}
}
Data yang diterima dari Biodata.java masih berupa String tetapi memiliki struktur JSON Encode. Dengan memasukkan String tersebut ke dalan JSONArray, maka otomatis data akan tersimpan didalam array. Tetapi perlu di ingat, bahwa data yang kita terima dari mysql adalah data berupa baris dan kolom
9. Selesai silahkan di Copas nanti kalau diketik takut error karena kepanjangan hehe
Pengujian :
1. Nyalakan Wifi / TheTering klo ga ada pokonya harus Wifi karena nantinya baik laptop sebagai tempat menyimpan database dan Android sebagai Client harus terhubung dengan IP yang sama ( misal laptop dan hp android terhubung wifikampus ). Misal IP laptop 192.168.43.94 masukkan dalam project pakaian.java
2. Nyalakan Xampp Apache dan MySQL cukup
3. Sambungkan kabel data pada HP Android ( dengan syarat driver sudah terinstall ) running project to HP Android misal ACER Z205
4. Selanjutnya lihat gambar dibawah
Demikian Postingan mengenai Tutorial membuat Aplikasi Android CRUD dengan JSON dan MySQL semoga bermanfaat, Ini bukan tutorial buat newbie yang baru mengenal android sebelumnya pelajari dahulu tentang JSON Array , CRUD android biasa , XML dll ini hanya tugas kuliah saya yang belum sempat di presentasikan . Semoga Bermanfaat.
Follw Blog Orang IT dan Like Fanspage saya Helmykkediricomp jangan lupa sedianya Klik Iklan untuk Blog ini untuk biaya Admin beli Kuota untuk Up Date Blog
Terimakasih Helmykkediricomp
Tag :
Materi-IT
0 Komentar untuk "CRUD Android Dengan JSON dan MySQL"