Android Volley Tutorial - Menyimpan Data Ke Database Mysql

Hai sobat, ketemu lagi dengan aku di artikel perihal pemrograman android. Pada artikel sebelumnya yang berjudul Menampilkan Data MySQL ke Aplikasi Android Menggunakan Volley, telah aku jelaskan langkah untuk menampilkan data dari database MySQL ke dalam aplikasi android memakai librari android. Nah padaartikel kali ini aku akan mengambarkan angkah atau cara untuk menyimpan data ke dalam database MySQL memakai aplikasi android. Oke sob, silahkan dibaca hingga habis 😁

 ketemu lagi dengan aku di artikel perihal pemrograman android Android Volley Tutorial - Menyimpan Data ke Database MySQL


Pada artikel sebelumnya sudah aku berikan sedikit klarifikasi perihal pembuatan aplikasi mengunakan WebService. Untuk berafiliasi dengan database MySQL atau database cloud, aplikasi membutuhkan mekanisme koneksi dengan server. Untuk melaksanakan hal tersebut, kita dapat mengunakan beberapa librari yang sudah disediakan diluar sana ibarat AdroidQuery, Volley, dan Retrofit. Dan dalam artikel ini, aku akan memakai librari volley sebagai koneksi HTTP client ke server.

Yang harus disiapkan untuk dapat mempraktekkan tutorial dari artikel ini, aku sarankan teman membaca artikel sebelumnya, teman dapat baca melalui link di bawah ini 👇

Tutorial Volley Android

Nah jikalau sudah siap, kini kita mulai untuk membuatnya. Aplikasi ini akan dipakai untuk menyimpan data dari ponsel Android ke dalam database MySQL. Database dapat berada di lokal maupun diunggah ke server cloud. Berikut langkah-langkah pembuatanya

Membuat Database

Database yang dipakai masih sama dengan artikel sebelumnya yaitu database app_blogvolley dan tabel hape, silahkan teman buat ibarat pada artikel sebelumnya

Membuat Server

Agar aplikasi android dapat mengambil dan memproses data pada server dan database MySQL, aplikasi android juga membutuhkan server sebagai mediator antara database dan aplikasi adroid. Untuk aplikasi ini kita membutuhkan tiga file PHP, yang pertama yaitu koneksi.php untuk koneksi ke database MySQL, kedua yaitu getdata.php untuk mengambil data databse MySQL dan mengirim ke Aplikasi Android, dan yang terakhir yaitu simpan.php mempunyai kegunaan untuk menangkap value dari aplikasi android dan menyimpan data ke dalam database MySQL.

Kedua file tadi sudah aku buat pada artikel sebelumnya (Tutorial Volley Android), silahkan teman buat terlebih dahulu, jikalau sudah silahkan teman buat file PHP gres dengan nama simpan.php dan buat kodenya ibarat berikut ini

 <?php include 'koneksi.php';  if (isset($_POST["merk"]) && isset($_POST["tipe"]) && $_POST["keterangan"]) {    $merk = $_POST["merk"];  $tipe = $_POST["tipe"];  $keterangan = $_POST["keterangan"];   $query = "INSERT INTO hape (merk, tipe, keterangan) VALUES ('$merk', '$tipe', '$keterangan')";  $eksekusi = mysql_query($query);   if ($eksekusi) {      $response['result'] = true;   $response['pesan'] = "Data tersimpan";   echo json_encode($response);  } else {   $response['result'] = false;   $response['pesan'] = "Data gagal tersimpan";   echo json_encode($response);  }   } else {  $response['result']= false ;     $response['msg']="Ada kesalahan";     echo json_encode($response); } ?> 


Membuat Project Baru

Sekarang buat project gres dengan nama CRUD Volley, untuk jenis activity pilih yang Basic Activity

Menginstal Librari

Jika project sudah terbentuk dengan sempurna, kini saatnya instal librari yang kita butuhkan. Nanti kita akan menampilkan data pada databse dan menampilkan gambar yang tersimpan si server. Silahkan buka file Build:Grandle(Module) dan masukkan arahan berikut di dalam dependencies

 compile 'com.github.bumptech.glide:volley-integration:1.4.0' compile 'com.android.support:recyclerview-v7:25.1.1' compile 'com.android.support:cardview-v7:25.1.1' 


jikalau sudah jangan lupa pilih Sync Now untuk mensingkronkan project.

Membuat Tampilan

Selanjutnya kita buat tampilan aplikasi androidnya. Karena kita memakai Basic Activity, maka akan terbentuk dua layout, yaitu activity_main.xml dan content_main.xml. Layout yang pertama berfungsi untuk menampung komponen toolbar dan floating action button, serta untuk menampilkan layout content_main.xml. Layout selanjutnya adalan content_main.xml yang berfungsi sebagai penampung gosip yang akan ditampilkan kepada user.

Pada activity_main.xml, silahkan ubah id pada FloatingActionButton dari fab menjadi btntambah. kemudian pada content_main.xml, buat kodenya ibarat berikut ini

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/content_main"     android:layout_width="match_parent"     android:layout_height="match_parent"     app:layout_behavior="@string/appbar_scrolling_view_behavior"     tools:context="com.aji.crudvolley.MainActivity"     tools:showIn="@layout/activity_main">      <android.support.v7.widget.RecyclerView         android:layout_width="match_parent"         android:layout_height="match_parent"         android:layout_alignParentTop="true"         android:layout_alignParentLeft="true"         android:layout_alignParentStart="true"         android:id="@+id/lvhape" /> </RelativeLayout>  


Nah, pada content_main.xml kita tampilkan komponen RecyclerView sebagai penampil data, tapi itu belum cukup sebab nanti kita akan menampilkan data berupa gambar dan teks, maka kita mambutuhkan layout dan komponen tambahan. Silajkan buat layout gres dengan nama list_item.xml dan buat kodenya ibarat berikut ini

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingTop="5dp">      <android.support.v7.widget.CardView         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginLeft="10dp"         android:layout_marginRight="10dp"         android:clickable="true"         android:foreground="?android:attr/selectableItemBackground"         android:padding="5dp">          <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="horizontal"             android:padding="5dp">              <ImageView                 android:id="@+id/imghp"                 android:layout_width="100dp"                 android:layout_height="100dp"                 android:src="@mipmap/ic_launcher" />              <TextView                 android:id="@+id/txthape"                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:layout_marginLeft="10dp"                 android:gravity="center_vertical"                 android:text="Merk"                 android:textSize="25sp" />         </LinearLayout>     </android.support.v7.widget.CardView>  </RelativeLayout> 


Membuat Activity Baru

Setelah kita buat tampilan aplikasi androidnya, selanjutnya tambahkan activity gres yang nantinya dipakai untuk menambah data. Alurnya yaitu, jikalau komponen FloatingActionButton pada MainActivity ditekan maka akan berpindah pada activity baru. Untuk menciptakan activity gres silahkan teman baca pada artikel aku sebelumnya perihal Intent pada link di bawah ini

Multiple Activity Android

Buat activity gres dengan tipe Basic Activity dan beri nama TambahActivity. Maka akan tebentuk dua layout lagi yaitu activity_tambah.xml dan content_tambah.xml. Pada activity_tambah.xml, ubah id pada komponen FloatingActionButton dari fab menjadi btnsimpan, selanjutnya pada content_tambah.xml buat kodenya ibarat berikut ini

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/content_tambah"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingBottom="@dimen/activity_vertical_margin"     android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     app:layout_behavior="@string/appbar_scrolling_view_behavior"     tools:context="com.aji.crudvolley.TambahActivity"     tools:showIn="@layout/activity_tambah">      <EditText         android:id="@+id/txtmerk"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_alignParentLeft="true"         android:layout_alignParentStart="true"         android:layout_alignParentTop="true"         android:hint="Merk"         android:inputType="textPersonName" />      <EditText         android:id="@+id/txttipe"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_alignParentLeft="true"         android:layout_alignParentStart="true"         android:layout_below="@+id/txtmerk"         android:layout_marginTop="14dp"         android:hint="Tipe"         android:inputType="textPersonName" />      <EditText         android:id="@+id/txtket"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_alignParentLeft="true"         android:layout_alignParentStart="true"         android:layout_below="@+id/txttipe"         android:layout_marginTop="16dp"         android:gravity="top"         android:hint="Keterangan"         android:inputType="textMultiLine"         android:lines="8"         android:maxLines="10"         android:minLines="6"         android:scrollbars="vertical" /> </RelativeLayout>  


Membuat Logika Java

Jika tampilan sudah dibuat, kini saatnya menciptakan kebijaksanaan agenda sob. Untuk pembuatan kebijaksanaan java sedikit aku pisah-pisahkan classnya biar gampang dalam pemanggilan. Untuk yang pertama, kita buat class gres untuk menyimpan url utama server serta method yang nanti perlu digunakan. Silahkan buat class gres si dalam package helper dan beri nama helper.java. Untuk menciptakan package gres dapat teman baca di link artikel sebelumnya.

Jika sudah terbentuk class gres dengan nama helper.java, kemuadian buat kodenya ibarat berikut ini

 package com.aji.crudvolley.helper;  /**  * Created by AJISETYA  */  public class helper {     public static String main_url = "http://192.168.95.77/app_blogvolley/"; }  


Setelah menciptakan helper, selanjutnya ialah menciptakan class sebagai control librari volley. Setiap sanksi dan pemanggilan librari dibentuk dari class ini. Silahkan buat class gres di dalam package app dengan nama AppController.java dan buat kodenya ibarat berikut ini

 package com.aji.crudvolley.app;  import android.app.Application; import android.text.TextUtils;  import com.aji.crudvolley.utils.LruBitmapCache; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley;  /**  * Created by AJISETYA.  */  public class AppController extends Application{     public static final String TAG = AppController             .class.getSimpleName();      private RequestQueue requestQueue;     private ImageLoader imageLoader;      private static AppController appController;      @Override     public void onCreate() {         super.onCreate();         appController = this;     }      public  static synchronized AppController getAppController(){         return appController;     }      public RequestQueue getRequestQueue(){         if (requestQueue == null){             requestQueue = Volley.newRequestQueue(getApplicationContext());         }         return requestQueue;     }      public ImageLoader getImageLoader(){         getRequestQueue();         if (imageLoader == null){             imageLoader = new ImageLoader(this.requestQueue             , new LruBitmapCache());         }         return this.imageLoader;     }      public <T> void addToRequestQueue(Request<T> request, String tag){         // set the default tag if tag is empty         request.setTag(TextUtils.isEmpty(tag) ? TAG : tag);         getRequestQueue().add(request);     }      public void cancelPendingRequest(Object object){         if (requestQueue != null){             requestQueue.cancelAll(object);         }     } }  


Oke, lanjut lagi ke class utama yaitu MainActivity.java. Di sini kita akan menampilkan data pada komponen RecyclerView. Untuk menampilkan data pada komponen RecyclerView Android caranya hampir sama dengan cara menampilkan data ke ListView Android, hanya beda sedikit pada adapternya saja.

Pada class MainActivity.java ini akan kita tampilkan data yang sudah tersimpan di dalam database MySQL. Untuk cara menampilkan data database MySQL ke aplikasi Android memakai RecyclerView caranya sama dengan tutorial yang sebelumnya aku buat, dapat teman baca pada link berikut

Menampilkan Data ke RecyclerView

Nah ibarat konsep pada link artikel di atas maka untuk class ini, silahkan teman buat kodenya ibarat di bawah ini

 package com.aji.crudvolley;  import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.view.Menu; import android.view.MenuItem;  import com.aji.crudvolley.adapter.AdapterList; import com.aji.crudvolley.app.AppController; import com.aji.crudvolley.helper.helper; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.VolleyLog; import com.android.volley.toolbox.JsonObjectRequest;  import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;  import java.util.ArrayList; import java.util.HashMap;  public class MainActivity extends AppCompatActivity {      private RecyclerView lvhape;      private ArrayList<HashMap<String, String>> list_data;      private String tag_json = "tag_json";      private String url = helper.main_url + "getdata.php";      ProgressDialog pd;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);         setSupportActionBar(toolbar);          FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.btntambah);         fab.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 startActivity(new Intent(getApplicationContext(), TambahActivity.class));             }         });          pd = new ProgressDialog(this);          lvhape = (RecyclerView)findViewById(R.id.lvhape);         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);         linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);         lvhape.setLayoutManager(linearLayoutManager);          list_data = new ArrayList<HashMap<String, String>>();          showData();     }      private void showData() {          pd.setMessage("Loading...");         pd.setCancelable(false);         showDialog();          JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {             @Override             public void onResponse(JSONObject response) {                 Log.d("RESPONSE ", response.toString());                 hideDialog();                 try {                     JSONArray jray = response.getJSONArray("handphone");                     for (int a = 0; a < jray.length(); a++){                         JSONObject json = jray.getJSONObject(a);                         HashMap<String, String> map = new HashMap<>();                         map.put("id", json.getString("idhp"));                         map.put("merk", json.getString("merk"));                         map.put("tipe", json.getString("tipe"));                         map.put("gambar", json.getString("gambar"));                         map.put("keterangan", json.getString("keterangan"));                         list_data.add(map);                         AdapterList adapter = new AdapterList(MainActivity.this, list_data);                         lvhape.setAdapter(adapter);                     }                 } catch (JSONException e) {                     e.printStackTrace();                 }             }         }, new Response.ErrorListener() {             @Override             public void onErrorResponse(VolleyError error) {                 VolleyLog.d("ERROR", error.getMessage());                 hideDialog();             }         });          AppController.getAppController().addToRequestQueue(jsonRequest, tag_json);     }      @Override     public boolean onCreateOptionsMenu(Menu menu) {         // Inflate the menu; this adds items to the action kafe if it is present.         getMenuInflater().inflate(R.menu.menu_main, menu);         return true;     }      @Override     public boolean onOptionsItemSelected(MenuItem item) {         // Handle action kafe item clicks here. The action kafe will         // automatically handle clicks on the Home/Up button, so long         // as you specify a parent activity in AndroidManifest.xml.         int id = item.getItemId();          //noinspection SimplifiableIfStatement         if (id == R.id.action_settings) {             return true;         }          return super.onOptionsItemSelected(item);     }      private void showDialog() {         if (!pd.isShowing())             pd.show();     }      private void hideDialog() {         if (pd.isShowing())             pd.dismiss();     } }  


Setelah menciptakan arahan pada MainActivity, untuk menampilkan data ke RecyclerView harus memakai adapter sebagai pemroses data dan viewholder sebagai penampil data. Makara kini teman buat file class gres di dalam package viewholder dan beri nama HapeHolder.java, untuk kodenya ibarat berikut ini

 package com.aji.crudvolley.holder;  import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView;  import com.aji.crudvolley.R;  /**  * Created by AJISETYA  */ public class HapeHolder extends RecyclerView.ViewHolder {     public TextView txthape;     public ImageView imghape;      public HapeHolder(View itemView) {         super(itemView);          txthape = (TextView)itemView.findViewById(R.id.txthape);         imghape = (ImageView)itemView.findViewById(R.id.imghp);     } }  


Selanjutnya, class HapeHolderkita panggil pada class adapter sebagai penampil data di masing masing komponen. Sekarang buat class gres di dalam package adapter dan beri nama AdapterList.java, dan buat kodenya ibarat berikut ini

 package com.aji.crudvolley.adapter;  import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;  import com.aji.crudvolley.MainActivity; import com.aji.crudvolley.R; import com.aji.crudvolley.helper.helper; import com.aji.crudvolley.holder.HapeHolder; import com.bumptech.glide.Glide;  import java.util.ArrayList; import java.util.HashMap;  /**  * Created by AJISETYA  */ public class AdapterList extends RecyclerView.Adapter<HapeHolder> {      private ArrayList<HashMap<String, String>> list_data;     Context context;      public AdapterList(MainActivity mainActivity, ArrayList<HashMap<String, String>> list_data) {         this.list_data = list_data;         this.context = mainActivity;     }      @Override     public HapeHolder onCreateViewHolder(ViewGroup parent, int viewType) {         View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, null);         return new HapeHolder(view);     }      @Override     public void onBindViewHolder(HapeHolder holder, int position) {         holder.txthape.setText(list_data.get(position).get("merk"));         Glide.with(context).load(helper.main_url + "img/" + list_data.get(position).get("gambar"))                 .crossFade().placeholder(R.mipmap.ic_launcher).into(holder.imghape);     }      @Override     public int getItemCount() {         return list_data.size();     } }  


Oke kita sudah menampilkan data, kini kita ke class TambahActivity.java yang berfungsi sebagai halaman untuk menambah data. Tidak ibarat MainActivity class ini sedikit simple, silahkan teman buka class TambahActivity.java dan buat kodenya sperti berikut ini

 package com.aji.crudvolley;  import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;  import com.aji.crudvolley.app.AppController; import com.aji.crudvolley.helper.helper; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.VolleyLog; import com.android.volley.toolbox.StringRequest;  import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;  import java.util.HashMap; import java.util.Map;  public class TambahActivity extends AppCompatActivity {      private EditText txtmerk, txttipe, txtket;      ProgressDialog pd;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_tambah);         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);         setSupportActionBar(toolbar);          txtmerk = (EditText) findViewById(R.id.txtmerk);         txttipe = (EditText) findViewById(R.id.txttipe);         txtket = (EditText) findViewById(R.id.txtket);          pd = new ProgressDialog(this);          FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.btnsimpan);         fab.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 String brand = txtmerk.getText().toString().trim();                 String tipe = txttipe.getText().toString().trim();                 String keterangan = txtket.getText().toString().trim();                 if (!merk.isEmpty() && !tipe.isEmpty() && !keterangan.isEmpty()) {                     simpanData(merk, tipe, keterangan);                 } else if (merk.isEmpty()) {                     txtmerk.setError("merk dihentikan kosong");                     txtmerk.requestFocus();                 } else if (tipe.isEmpty()) {                     txttipe.setError("tipe dihentikan kosong");                     txttipe.requestFocus();                 } else if (keterangan.isEmpty()) {                     txtket.setError("keterangan dihentikan kosong");                     txtket.requestFocus();                 }              }         });         getSupportActionBar().setDisplayHomeAsUpEnabled(true);     }      private void simpanData(final String merk, final String tipe, final String keterangan) {         String url_simpan = helper.main_url + "simpan.php";          String tag_json = "tag_json";          pd.setCancelable(false);         pd.setMessage("Menyimpan...");         showDialog();          StringRequest stringRequest = new StringRequest(Request.Method.POST, url_simpan, new Response.Listener<String>() {             @Override             public void onResponse(String response) {                 Log.d("response", response.toString());                 hideDialog();                  try {                     JSONObject jObject = new JSONObject(response);                     String pesan = jObject.getString("pesan");                     String hasil = jObject.getString("result");                     if (hasil.equalsIgnoreCase("true")) {                         Toast.makeText(TambahActivity.this, pesan, Toast.LENGTH_SHORT).show();                         startActivity(new Intent(getApplicationContext(), MainActivity.class));                         finish();                     } else {                         Toast.makeText(TambahActivity.this, pesan, Toast.LENGTH_SHORT).show();                     }                 } catch (JSONException e) {                     e.printStackTrace();                     Toast.makeText(TambahActivity.this, "Error JSON", Toast.LENGTH_SHORT).show();                 }             }         }, new Response.ErrorListener() {             @Override             public void onErrorResponse(VolleyError error) {                 VolleyLog.d("ERROR", error.getMessage());                 Toast.makeText(TambahActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();                 hideDialog();             }         }) {             @Override             protected Map<String, String> getParams() throws AuthFailureError {                 Map<String, String> param = new HashMap<String, String>();                 param.put("merk", merk);                 param.put("tipe", tipe);                 param.put("keterangan", keterangan);                 return param;             }         };          AppController.getAppController().addToRequestQueue(stringRequest, tag_json);     }      private void showDialog() {         if (!pd.isShowing())             pd.show();     }      private void hideDialog() {         if (pd.isShowing())             pd.dismiss();     }  }  


Memberikan Izin Mengakses Internet

Karena aplikasi mengambil data dari databse MySQL di server, maka aplikasi internet mebutuhkan perizinan untuk mengakses internet. Untuk menambahkan izin internet caranya dengan menambahkan arahan di bawah ini di dalam file AndroidManifest.xml dan letakkan di atas arahan <application>

 <uses-permission android:name="android.permission.INTERNET" /> 


Menjalankan Program

Jika semuanya sudah kini saatnya menjalankan aplikasi dengan menentukan sajian Run-app, maka tampilannya akn menjadi ibarat ini sob

 ketemu lagi dengan aku di artikel perihal pemrograman android Android Volley Tutorial - Menyimpan Data ke Database MySQL

 ketemu lagi dengan aku di artikel perihal pemrograman android Android Volley Tutorial - Menyimpan Data ke Database MySQL


Nah, bagaimana sobat, cukup gampang bukan? aplikasi ini mempunyai dua pekerjaan untuk librari volley, yang pertama ialah menciptakan undangan JSON dan yang kedua yaitu menambahkan POST parameter ke server. Data dari server MySQL diambil dan ditamilkan di Android RecyclerView dan data nilai dikirim ke server kemudian disimpan ke dalam database MySQL.

Silahkan jikalau teman ingin melihat project lengkap perihal menyimpan data ke dalam database MySQL dengan aplikasi android, dapat dilihat di link berikut


Sekian artikel perihal  Android Volley Tutorial - Menyimpan Data ke Database MySQL, semoga bermanfaat. Silahkan bagikan artikel ini jikalau teman mneyukainya. Silahkan teman dapat kirimkan pertanyaan, kritik, saran, maupun komentar di kolom komentar di bawah ini. Sekian, hingga jumpa di artikel selanjutnya..





0 Komentar untuk "Android Volley Tutorial - Menyimpan Data Ke Database Mysql"

Back To Top