Как работать с MySQL в Android? Часть 1 – Devcolibri – Android для начинающих

Как работать с MySQL в Android? Часть 1

На днях мне пришлось подключится к внешней БД MySQL в Android приложении, которое бы использовало ресурсы готового сервиса, так вот в данном уроке я покажу как я это сделал.

В данном уроке мы с вами сделаем простое Android-приложения, который будет вызывать PHP скрипт для выполнения основных CRUD (Create, Read, Update, Delete) операций.

Android приложение будет вызывать PHP скрипт, который будет подключается к базе данных MySQL и выполнить какие то операции.

Что вам потребуется?

1) WEB-сервер для PHP. Будем использовать сборку DenWer.

2) MySQL база данных.

3) Android Emulator.

Шаг 1. Установка WEB-сервера.

Так как мы будем работать со сборкой Denwer, то для начала скачиваем её тут http://www.denwer.ru/

После того как вы его установили и проверили, что он работает, переходим к следующему шагу.

Шаг 2. Создание БД

Так как мы подняли WebServer Denwer в нем уже вшита MySQL база данных, давайте создадим базу и таблицу (products) в ней.

Создание таблиц в БД:

CREATE TABLE products(
    pid int(11) primary key auto_increment,
    name varchar(100) not null,
    price decimal(10,2) not null,
    description text,
    created_at timestamp default now(),
    updated_at timestamp
);

В конце видео создания БД я не зря показал локальный IP, так как я использую виртуальную ОС для удобства. В вашем случае вы будите обращаться к localhost или же 127.0.0.1 .

Шаг 3. Подключение к MySQL базе с помощью PHP

Давайте создадим PHP класс, который будет отвечать за подключение к БД. Основная цель этого класса – открытие и закрытие соединения с БД.

Но, для того что бы подключатся к БД нам нужно где то хранить требуемые параметры для подключения к БД для этого создадим [C:\WebServers\home\devserver.com\www\db_config.php] со следующим содержимым:

<?php 
    define('DB_USER', "root"); //логин админа БД
    define('DB_PASSWORD', "root"); // пароль админа БД
    define('DB_DATABASE', "devcolibri"); // база данных
    define('DB_SERVER', "localhost"); // сервер 'localhost'
?>

А теперь создадим в той же директории файл [C:\WebServers\home\devserver.com\www\db_connect.php] со следующим содержимым:

<?php

class DB_CONNECT {

    function __construct() {
        $this->connect();
    }

    function __destruct() {
        $this->close();
    }

    function connect() {
        require 'db_config.php';

        $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());

        $db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());

        return $con;
    }

    function close() {
        mysql_close();
    }

}

?>

Шаг 4. Базовые CRUD операции в PHP

В этом уроке я покрываю основные CRUD (Create, Read, Update, Delete) операций для MySQL с помощью PHP.

Запись строки в БД

Создадим в нашем PHP проекте новый файл create_product.php который будет обеспечивать возможность записи продукта в БД.

<?php
$response = array();

if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {

    $name = $_POST['name'];
    $price = $_POST['price'];
    $description = $_POST['description'];

    require 'db_connect.php';

    $db = new DB_CONNECT();

    $result = mysql_query("INSERT INTO products(name, price, description) VALUES('$name', '$price', '$description')");

    if ($result) {
        $response["success"] = 1;
        $response["message"] = "Product successfully created.";

        echo json_encode($response);
    } else {
        $response["success"] = 0;
        $response["message"] = "Oops! An error occurred.";

        echo json_encode($response);
    }
} else {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    echo json_encode($response);
}
?>

Для приведенного выше кода JSON ответ будет примерно таким:

Когда POST параметр(ы) отсутствует:

{
    "success": 0,
    "message": "Обязательное поле(я) отсутствует"
}

Когда продукт успешно добавлен:

{
    "success": 1,
    "message": "Продукт успешно создана."
}

Когда ошибка при добавлении данных в БД:

{
    "success": 0,
    "message": "Error! По каким-то причинам продукт не был добавлен."
}

Чтение строки с БД

Создадим новый PHP файл в нашем проекте и назовем его get_product_details.php со следующим содержанием:

<?php

$response = array();

require 'db_connect.php';

$db = new DB_CONNECT();

if (isset($_GET["pid"])) {
    $pid = $_GET['pid'];

    $result = mysql_query("SELECT *FROM products WHERE pid = $pid");

    if (!empty($result)) {
        if (mysql_num_rows($result) > 0) {

            $result = mysql_fetch_array($result);

            $product = array();
            $product["pid"] = $result["pid"];
            $product["name"] = $result["name"];
            $product["price"] = $result["price"];
            $product["description"] = $result["description"];
            $product["created_at"] = $result["created_at"];
            $product["updated_at"] = $result["updated_at"];
            $response["success"] = 1;

            $response["product"] = array();

            array_push($response["product"], $product);

            echo json_encode($response);
        } else {
            $response["success"] = 0;
            $response["message"] = "No product found";

            echo json_encode($response);
        }
    } else {
        $response["success"] = 0;
        $response["message"] = "No product found";

        echo json_encode($response);
    }
} else {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    echo json_encode($response);
}
?>

Ответ JSON для вышеупомянутого файла будет следующим.

При успешном получении продукта:

{
    "success": 1,
    "product": [
        {
            "pid": "1",
            "name": "iPHone 5",
            "price": "500.00",
            "description": "iPhone 5 white",
            "created_at": "2013-04-27 01:22:56",
            "updated_at": "0000-00-00 00:00:00"
        }
    ]
}

Когда продукт не найден:

{
    "success": 0,
    "message": "Продукт не найден."
}

Получение всех продуктов с БД

Для того чтобы вывести весь список продуктов на устройство нам нужно получить все продукты с БД.

Создадим get_all_products.php со следующим содержимым:

<?php

$response = array();

require 'db_connect.php';

$db = new DB_CONNECT();

$result = mysql_query("SELECT *FROM products") or die(mysql_error());

if (mysql_num_rows($result) > 0) {
    $response["products"] = array();

    while ($row = mysql_fetch_array($result)) {
        $product = array();
        $product["pid"] = $row["pid"];
        $product["name"] = $row["name"];
        $product["price"] = $row["price"];
        $product["created_at"] = $row["created_at"];
        $product["updated_at"] = $row["updated_at"];

        array_push($response["products"], $product);
    }
    $response["success"] = 1;

    echo json_encode($response);
} else {
    $response["success"] = 0;
    $response["message"] = "No products found";

    echo json_encode($response);
}
?>

JSON ответ выше приведенного кода будет таким:

{
    "products": [
        {
            "pid": "1",
            "name": "iPhone 5",
            "price": "500.00",
            "created_at": "2013-04-27 02:04:02",
            "updated_at": "0000-00-00 00:00:00"
        },
        {
            "pid": "2",
            "name": "Macbook Pro",
            "price": "600.00",
            "created_at": "2012-04-29 02:04:51",
            "updated_at": "0000-00-00 00:00:00"
        },
        {
            "pid": "3",
            "name": "Macbook Air",
            "price": "800.00",
            "created_at": "2013-04-27 02:05:57",
            "updated_at": "0000-00-00 00:00:00"
        },
        {
            "pid": "4",
            "name": "OS X Lion",
            "price": "100.00",
            "created_at": "2013-04-27 02:07:14",
            "updated_at": "0000-00-00 00:00:00"
        }
    ],
    "success": 1
}

Когда продукт не найден:

{
    "success": 0,
    "message": "Продуктов нет в БД!"
}

Обновление продукта в БД

Создайте файл с именем update_product.php со следующим содержимым:

<?php

$response = array();

if (isset($_POST['pid']) && isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {

    $pid = $_POST['pid'];
    $name = $_POST['name'];
    $price = $_POST['price'];
    $description = $_POST['description'];

    require 'db_connect.php';

    $db = new DB_CONNECT();

    $result = mysql_query("UPDATE products SET name = '$name', price = '$price', description = '$description' WHERE pid = $pid");

    if ($result) {
        // successfully updated
        $response["success"] = 1;
        $response["message"] = "Product successfully updated.";

        echo json_encode($response);
    } else {

    }
} else {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    echo json_encode($response);
}
?>

Ответ JSON выше кода, когда продукт успешно обновлены будет следующим:

{
    "success": 1,
    "message": "Продукт удачно обновлен!"
}

Удаление продукта с БД

Последняя операция удаления из базы данных. Создайте новый файл назовите delete_product.php и вставьте следующий код:

<?php

$response = array();

if (isset($_POST['pid'])) {
    $pid = $_POST['pid'];

    require 'db_connect.php';

    $db = new DB_CONNECT();

    $result = mysql_query("DELETE FROM products WHERE pid = $pid");
    if (mysql_affected_rows() > 0) {
        $response["success"] = 1;
        $response["message"] = "Product successfully deleted";

        echo json_encode($response);
    } else {
        $response["success"] = 0;
        $response["message"] = "No product found";

        echo json_encode($response);
    }
} else {
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    echo json_encode($response);
}
?>

Когда продукт удачно будет удален то JSON ответ будет таким:

{
    "success": 1,
    "message": "Продукт удачно удален!"
}

Когда продукт не найден, то таким:

{
    "success": 0,
    "message": "Продукт не найден!"
}

Теперь наконец-то мы можем приступить к программированию на Android. То что мы описали выше на PHP будем использовать как API слой. И наше приложение будет общаться с MySQL сервером по средством JSON формата и GET, POST запросов.

Шаг 5. Создаем Android приложение

ПОХОЖИЕ ПУБЛИКАЦИИ

    None Found

141978
27/04/2013

21 комментариев к статье "Как работать с MySQL в Android? Часть 1"

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)