cara menghubungkan database MySQL dengan android studio
Banyak cara yang dapat dilakukan untuk menghubungkan aplikasi client (android) dengan sebuah server seperti: MySQL, firebase, mongoDB, postgreSQL dll. Disini kita akan bahas cara untuk menghubungkan aplikasi client (android) dengan database MySQL. Mari kita mulai !!!!
Untuk langkah pertama mari kita siapkan dulu database nya, buat database dengan nama tutorial_1 dan table dengan nama mahasiswa. Dengan field-field sebagai berikut:
Setelah selesai dibuat, insert database dengan data sebagai berikut:
Selanjutnya kita masuk ke directori xampp, kalo di windows biasanya ada di C:/Program Files/XAMPP/htdocs. Untuk pengguna OS lain silahkan menyesuaikan. Lalu kita buat sebuah folder dengan nama apiClient.
Jika sudah, kita buat sebuah file di dalam folder /apiClient dengan nama koneksi.php. lalu isi file tersebut dengan kode dibawah ini:
Selanjutnya kita buat satu file lagi di dalam folder /apiClient dengan nama mahasiswa.php. dan isikan kode dibawah ini:
// Variable penampung array sementara
$response_data = null;
while ($data = $query->fetch_assoc()) {
// tambahkan data yg di seleksi ke dalam array
$response_data[] = $data;
}
// Cek apakah datanya null ?
if (is_null($response_data)) {
// jika ya, buat status untuk response jadi false
$status = false;
} else {
// jika tidak, buat status untuk response jadi true
$status = true;
}
// Set type header response ke Json
header(‘Content-Type: application/json’);
// Bungkus data dalam array
$response = [‘status’ => $status, ‘mahasiswa’ => $response_data];
// tampilkan dan convert ke format json
echo json_encode($response);
Selanjutnya kita buat folder images di dalam folder /apiClient lalu masukan foto dengan nama sesuai dengan data didatabase. Sehingga seluruh isi folder menjadi seperti:
Selanjutnya kita masuk ke project android nya, pertama buka android studio lalu pilih new project, pilih empty activity lalu muncul seperti gambar dibawah ini, scroll kebawah lalu klik finish.
Next buka file build.gradle (module app) dan tambahkan :
Ubah file activity_main.xml yang berada di package res/layout menjadi:
Next, buat file xml baru di package res/layout dengan nama mahasiswa_item.xml lalu isikan:
Next, buat package baru di folder project java dengan nama network, lalu buat file java dengan nama Init.java sehingga menjadi seperti:
Isi file Init.java dengan kode:
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class Init {
// URL Server API
public static String API_URL = “http://192.168.20.157/apiClient/”; //samakan api address dengan komputer anda
public static Retrofit setInit() {
return new Retrofit.Builder().baseUrl(API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static ApiServices getInstance() {
return setInit().create(ApiServices.class);
}
}
Next, buat file interface didalam package network dengan nama ApiServices dan isikan kode:
import com.example.mahasiswa.response.ResponseMahasiswa;
import retrofit2.Call;
import retrofit2.http.GET;
public interface ApiServices {
//@TIPEMETHOD(“API_END_POINT”)
@GET(“mahasiswa.php”)
Call
//
}
Next, buat package baru dengan nama response dan didalam nya buat file ResponseMahasiswa.java lalu isikan kode:
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class ResponseMahasiswa {
@SerializedName(“mahasiswa”)
private List
@SerializedName(“status”)
private boolean status;
public void setMahasiswa(List
this.mahasiswa = mahasiswa;
}
public List
return mahasiswa;
}
public void setStatus(boolean status){
this.status = status;
}
public boolean isStatus(){
return status;
}
@Override
public String toString(){
return
“ResponseMahasiswa{” +
“mahasiswa=”” + mahasiswa + “\” +
“,status=”” + status + “\” +
“}”;
}
}
Next, buat file MahasiswaItem.java di dalam package response, lalu isikan kode:
import com.google.gson.annotations.SerializedName;
public class MahasiswaItem {
@SerializedName(“foto”)
private String foto;
@SerializedName(“id”)
private String id;
@SerializedName(“nama_mahasiswa”)
private String nama_mahasiswa;
@SerializedName(“nim_mahasiswa”)
private String nim_mahasiswa;
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNama_mahasiswa() {
return nama_mahasiswa;
}
public void setNama_mahasiswa(String nama_mahasiswa) {
this.nama_mahasiswa = nama_mahasiswa;
}
public String getNim_mahasiswa() {
return nim_mahasiswa;
}
public void setNim_mahasiswa(String nim_mahasiswa) {
this.nim_mahasiswa = nim_mahasiswa;
}
@Override
public String toString(){
return
“MahasiswaItem{” +
“foto = ‘” + foto + ‘\” +
“,id = ‘” + id + ‘\” +
“,nama_mahasiswa=”” + nama_mahasiswa + “\” +
“,nim_mahasiswa=”” + nim_mahasiswa + “\” +
“}”;
}
}
Next, buat file java dengan nama AdapterMahasiswa.java lalu isikan kode:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.example.mahasiswa.response.MahasiswaItem;
import com.squareup.picasso.Picasso;
import java.util.List;
public class AdapterMahasiswa extends RecyclerView.Adapter
Context context;
List
public AdapterMahasiswa(Context context, List
// Inisialisasi
this.context = context;
this.mahasiswa = data_mahasiswa;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Layout inflater
View view = LayoutInflater.from(context).inflate(R.layout.mahasiswa_item, parent, false);
// Hubungkan dengan MyViewHolder
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
// Set widget
holder.namaMhs.setText(mahasiswa.get(position).getNama_mahasiswa());
holder.nimMhs.setText(mahasiswa.get(position).getNim_mahasiswa());
//holder.wvKontenAbout.getSettings().setJavaScriptEnabled(true);
//holder.wvKontenAbout.loadData(about.get(position).getDeskripsi(), “text/html; charset=utf-8”, “UTF-8”);
// Dapatkan url gambar
final String urlGambarAbout = “http://192.168.20.157/apiClient/images/” + mahasiswa.get(position).getFoto();
// Set image ke widget dengna menggunakan Library Piccasso
// krena imagenya dari internet
Picasso.with(context).load(urlGambarAbout).into(holder.fotoMhs);
}
// Menentukan Jumlah item yang tampil
@Override
public int getItemCount() {
return mahasiswa.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
// Deklarasi widget
ImageView fotoMhs;
TextView namaMhs, nimMhs;
public MyViewHolder(View itemView) {
super(itemView);
// inisialisasi widget
fotoMhs = (ImageView) itemView.findViewById(R.id.fotoMhs);
namaMhs = (TextView) itemView.findViewById(R.id.namaMhs);
nimMhs = (TextView) itemView.findViewById(R.id.nimMhs);
}
}
}
Next, ubah MainActivity.java menjadi seperti:
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.example.mahasiswa.network.ApiServices;
import com.example.mahasiswa.network.Init;
import com.example.mahasiswa.response.MahasiswaItem;
import com.example.mahasiswa.response.ResponseMahasiswa;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.ListMahasiswa);
// RecyclerView harus pakai Layout manager
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// Eksekusi method
tampilMahasiswa();
}
private void tampilMahasiswa() {
ApiServices api = Init.getInstance();
// Siapkan request
Call
// Kirim request
aboutCall.enqueue(new Callback
@Override
public void onResponse(Call
// Pasikan response Sukses
if (response.isSuccessful()) {
Log.d(“response api”, response.body().toString());
// tampung data response body ke variable
List
boolean status = response.body().isStatus();
// Kalau response status nya = true
if (status) {
// Buat Adapter untuk recycler view
AdapterMahasiswa adapter = new AdapterMahasiswa(MainActivity.this, data_mahasiswa);
recyclerView.setAdapter(adapter);
} else {
// kalau tidak true
Toast.makeText(MainActivity.this, “Tidak ada Data”, Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onFailure(Call
// print ke log jika Error
t.printStackTrace();
}
});
}
}
Terakhir tambahkan kode berikut di file AndroidManifest.xml :
Sehingga tampilan seluruh folder menjadi seperti:
Ya, itulah cara menghubungkan database MySQL dengan android studio semoga bermanfaat, kalo ada yang ingin ditanyakan silahkan komentar dibawah ya 🙂
Happy Coding 🙂
Komentar
Posting Komentar