Hướng dẫn kết nối android với mysql (Phần 2)

Bài hướng dẫn kết nối android với mysql sẽ hướng dẫn các bạn cách xây dựng ứng dụng android làm việc với cơ sở dữ liệu được lưu trữ trên các server sử dụng các hệ quản trị cơ sở dữ liệu như MySQL, SQLServer, Oracle, …  cho phép người sử dụng thực hiện các thao tác cơ bản CRUD(Create, Read, Update, Delete).

Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn thực hiện thêm dữ liệu (Create) vào MySQL thông qua PHP. Ứng dụng android sẽ thông qua PHP để thực hiện các thao tác trên dữ liệu. Điều đó có nghĩa là PHP sẽ thực hiện kết nối với MySQL và xử lý dữ liệu theo yêu cầu từ ứng dụng android. Dữ liệu được đóng gói dưới dạng JSON.

kết nối android với mysql

Hướng dẫn kết nối android với mysql – Chuẩn bị

Tải và cài đặt XAMPP. Tham khảo hướng dẫn tải và cài đặt XAMPP

Hướng dẫn kết nối android với mysql – Các bước thực hiện

Lưu ý nếu các bạn đã xem và làm theo bài viết hướng dẫn kết nối android với mysql (phần 1) thì sẽ bỏ qua các muc (1), (2), (3)(4). Ngoại trừ mục (2) các bạn chỉ thực hiện tạo tập tin createPF.php

Tạo cơ sở dữ liệu trên MySQL (1)

Truy cập phpmyadmin sử dụng link http://localhost/phpmyadmin/ để tạo một cơ sở dữ liệu và môt bảng sử dụng câu lệnh

Câu lệnh tạo cơ sở dữ liệu tên platfformdb

CREATE DATABASE platfformdb

Câu lệnh tạo bảng platfform

CREATE TABLE platfform (
 id int(11) NOT NULL AUTO_INCREMENT
 ,name varchar(30) NOT NULL
 ,PRIMARY KEY (id)
)

Câu lệnh thêm dữ liệu cho bảng platfform

INSERT INTO platfform (name) VALUES ('Android');
INSERT INTO platfform (name) VALUES ('iOS');
INSERT INTO platfform (name) VALUES ('Windows Phone');

Tạo PHP Project (2)

Mở thư mục htdocs trong thư mục xampp và tạo một thư mục tên platfform

Tạo tập tin config.php trong thư mục platfform

<?php
/**
 * Thông tin kêt nối đến MySQL
 */
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_NAME', 'platfformdb');
?>

Tạo tập tin dbConnect.php trong thư mục platfform

<?php
class dbConnect {
 
  private $conn;

  function __construct() { 
    // connecting to database
    $this->connect();
  }

 function __destruct() {
   // closing db connection
   $this->close();
 }

 /**
 * Thiết lập kết nối đến MySQL
 * 
 */
 function connect() { 
   include_once dirname(__FILE__) . './config.php';
 
   // Thực hiện kết nối đến MySQL
   $this->conn = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD) or die(mysql_error());

   // Chọn cơ sở dữ liệu
   mysql_select_db(DB_NAME) or die(mysql_error());
    
   return $this->conn;
 }

 /**
 * Đóng kết nối
 */
 function close() {
   // Đóng kết nối với MySQL
   mysql_close($this->conn);
 }

}
?>

Tạo tập tin createPF.php trong thư mục platfform

<?php

// Mảng JSON
$response = array();

// Kiểm tra những field bắt buộc nhập
if (isset($_POST['name'])) { 
 $name = $_POST['name']; 
 // khai báo tập tin db
 require_once __DIR__ . '/dbConnect.php';

 // Thực hiện kết nối đến MySQL
 $db = new dbConnect();

 // Thêm dữ liệu
 $result = mysql_query("INSERT INTO platfform(name) VALUES('$name')");

 // Kiểm tra số dòng được thêm hoặc không
 if ($result) {
  // Thêm dữ liệu thành công
  $response["success"] = 1;
  $response["message"] = "Thêm thành công.";

  // Trả kết quả cho client
   echo json_encode($response);
 } else {
  // Thêm thất bại
  $response["success"] = 0;
  $response["message"] = "Thêm thất bại.";
 
  // Trả về kết quả
  echo json_encode($response);
 }
} else {
 // Những filed bắt buộc nhập chưa có dữ liệu
 $response["success"] = 0;
 $response["message"] = "Bạn chưa nhập dữ liệu.";

 // Trả về kết quả
 echo json_encode($response);
}
?>

Hướng dẫn kết nối android với mysql – Tạo mới Android Project

Tạo class tên PlatfForm.java (3)

public class PlatfForm {
    public int id;
    public String name;

    public PlatfForm(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

Tạo một Java class tên MyService.java (4)

Bổ sung useLibrary ‘org.apache.http.legacy’ trong tập tin build.gradle (Module: app)

kết nối android với mysql

Viết xử lý cho MyService.java

public class MyService {
    static InputStream is = null;
    static String response = null;
    public final static int GET = 1;
    public final static int POST = 2;
    
    public String makeService(String url, int method) {
        return this.makeService(url, method, null);
    }
    
    public String makeService(String url, int method, List<NameValuePair> params) {
        try {
            // http client
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            // Kiểm tra loại method là POST hay GET
            if (method == POST) {
                HttpPost httpPost = new HttpPost(url);
                // thêm tham số
                if (params != null) {
                    httpPost.setEntity(new UrlEncodedFormEntity(params));
                }

                httpResponse = httpClient.execute(httpPost);

            } else if (method == GET) {
                // thêm tham số vào url
                if (params != null) {
                    String paramString = URLEncodedUtils.format(params, "utf-8");
                    url += "?" + paramString;
                }
                HttpGet httpGet = new HttpGet(url);
                httpResponse = httpClient.execute(httpGet);

            }
            httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (Exception ex) {
            Log.d("My error", ex.toString());
        } 

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            response = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error: " + e.toString());
        }

        return response;

    }
}

Thiết kế giao diện

kết nối android với mysql

Viết xử lý tại Activity

Khai báo biến

ProgressDialog pd;
MyService sh;

EditText etName;
String name;

private static final String URL_NEW_PF = "http://10.0.2.2:port/platfform/createPF.php";

Khai báo class NewPlatfForm bên trong Activity dùng để thêm dữ liệu vào MySQL (bảng platfform)

class NewPlatfForm extends AsyncTask {
    String name;

    public NewPlatfForm(String name) {
        this.name = name;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pd = new ProgressDialog(NewPlatfFormActivity.this);
        pd.setMessage("Creating platfform...");
        pd.setIndeterminate(false);
        pd.setCancelable(true);
        pd.show();
    }

    @Override
    protected Object doInBackground(Object[] params) {

        // Tạo danh sách tham số gửi đến máy chủ
        List<NameValuePair> args = new ArrayList<NameValuePair>();
        args.add(new BasicNameValuePair("name", name));

        // Lấy đối tượng JSON
        String json = sh.makeService(URL_NEW_PF, MyService.POST, args);
        if (json != null) {
            try {
                JSONObject jsonObject = new JSONObject(json);
                int success = jsonObject.getInt("success");
                if (success == 1) {
                    
                } else {
                    
                }
            } catch (JSONException e) {
                Log.d("Error...", e.toString());
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Object o) {
        super.onPostExecute(o);
        pd.dismiss();
    }
}

Viết xử lý cho nút CREATE và đăng ký tại sự kiện onClick bên layout (etName là id của EditText, name là biến kiểu String)

//Lấy dữ liệu từ màn hình
name = etName.getText().toString();
//Gọi web service
new NewPlatfForm(name).execute();

Hướng dẫn kết nối android với mysql – Build và run

Giao diện ứng dụng khi chạy

kết nối android với mysql

Khi người dùng nhập dữ liệu và chạm vào nút CREATE

kết nối android với mysql

Kiểm tra dữ liệu trong MySQL bằng cách truy cập link http://localhost/phpmyadmin/

kết nối android với mysql

Chúc các bạn thành công!
BQT – http://giasutinhoc.vn