Tuesday, December 20, 2022

Cara Koneksi MySQL dan Android Studio

Tools yang dibutuhkan:

1. Aplikasi XAMPP, yaitu dengan mengaktifkan Webserver Apache dan MySQL untuk membuat Databasenya.

2. Android Studio, yaitu untuk membuat interface atau tampilan desain Form Login dan Registrasinya.

3. Aplikasi Text Editor, yaitu yang akan digunakan untuk mengetikkan script PHPnya.

4. Aplikasi Postman, yaitu untuk menguji file php yang dibuat.

Langkah-langkah Pembuatan:

1. Membuat Database.

Buatlah sebuah database dengan nama android. Kemudian buatlah sebuah tabel dengan nama users. Adapun struktur di tabel users adalah terlihat seperti gambar dibawah.

Gambar 1. Struktur Tabel Users

2. Membuat Koneksi Database dengan PHP (File API).

Buatlah sebuah folder baru di XAMPPHTDOCS dengan nama misalnya “android”. Kemudian didalam folder android tersebut, buat lagi 2 buah folder baru misalnya dengan nama folder “includes” dan folder “v1”. Setelah itu, di dalam folder includes buatlah sebuah file php dengan nama Constants.php. ketikkan script berikut:

Gambar 2. File Constants.php

Setelah itu, buat lagi sebuah file php masih di folder includes dengan nama DbConnect.php, ketikkan script berikut:

 

Gambar 3. File DbConnect.php

Setelah itu buat lagi sebuah file php masih di folder includes dengan nama DbOperations.php, ketikkan script berikut:

 

Gambar 4. File DbOperations.php


3. Membuat API untuk Register user

Buatlah sebuah file php di folder v1 dengan nama registerUser.php, ketikkan script dibawah:

 

Gambar 5. File userRegister.php


4. Uji Coba File API yang sudah dibuat dengan menggunakan Aplikasi Postman.

Berikut hasil ujicoba dengan postman

Gambar 6. Uji Coba dengan Postman

Membuat Tampilan di android

Gambar 7. Tampilan Awal ketika dijalankan


Sebelumnya tambahkan dahulu di depedency:
implementation 'com.android.volley:volley:1.2.1'

Script di activity_main.xml
<?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/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/LinearLayout"
        android:layout_centerVertical="true"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:text="Username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/editTextUsername"
            android:hint="Enter username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:text="Password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/editTextPassword"
            android:hint="Enter Password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:text="Email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/editTextEmail"
            android:hint="Enter email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:text="Register User"
            android:id="@+id/buttonRegister"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
        android:layout_below="@+id/LinearLayout"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
        android:textAlignment="center"
        android:text="Already Registered? \n click Here to Login"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

Buat java class dengan nama Constants

package com.ilmankadori.androidphpmysql;

public class Constants {
    private static final String ROOT_URL="http://localhost/Android/v1/";
    public static final String URL_REGISTER=ROOT_URL+"registerUser.php";
}
Keterangan: 
Localhost jika tidak berhasil konek ke database silahkan ganti dengan IP dari komputer anda.

isi script di MainActivity.java

package com.ilmankadori.androidphpmysql;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editTextUsername, editTextEmail, editTextPassword;
    private Button buttonRegister;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTextEmail=(EditText) findViewById(R.id.editTextEmail);
        editTextUsername=(EditText) findViewById(R.id.editTextUsername);
        editTextPassword=(EditText) findViewById(R.id.editTextPassword);

        buttonRegister=(Button) findViewById(R.id.buttonRegister);

        progressDialog=new ProgressDialog(this);

        buttonRegister.setOnClickListener(this);
    }

    private void registerUser(){
        final String email=editTextEmail.getText().toString().trim();
        final String username=editTextUsername.getText().toString().trim();
        final String password=editTextPassword.getText().toString().trim();

        progressDialog.setMessage("Registering user...");
        progressDialog.show();

        StringRequest stringRequest=new StringRequest(Request.Method.POST,
                Constants.URL_REGISTER,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        progressDialog.dismiss();
                        try{
                            JSONObject jsonObject=new JSONObject(response);
                            Toast.makeText(getApplicationContext(), jsonObject.getString("message"), Toast.LENGTH_SHORT).show();

                        }catch (JSONException e){
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        progressDialog.hide();
                        Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
                    }
                }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError{
                Map<String, String> params=new HashMap<>();
                params.put("username", username);
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };

        RequestQueue requestQueue= Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    @Override
    public void onClick(View view){
        if (view==buttonRegister)
        registerUser();
    }
}


tambahkan script berikut di androidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
Silahkan tambahkan juga di androidManifest.xml
android:usesCleartextTraffic="true"
letakkan di bagian 
<application
………………. 
………………. >

0 comments:

Post a Comment