На днях мне пришлось подключится к внешней БД 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) в ней.
Программа с базой данных и интерфейсом PYQT5 на Python
Создание таблиц в БД:
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:WebServershomedevserver.comwwwdb_config.php] со следующим содержимым:
А теперь создадим в той же директории файл [C:WebServershomedevserver.comwwwdb_connect.php] со следующим содержимым:
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 который будет обеспечивать возможность записи продукта в БД.
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 ответ будет примерно таким:
Учим Базы Данных за 1 час! #От Профессионала
Когда POST параметр(ы) отсутствует:
Когда продукт успешно добавлен:
Когда ошибка при добавлении данных в БД:
Чтение строки с БД
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 для вышеупомянутого файла будет следующим.
При успешном получении продукта:
Когда продукт не найден:
Получение всех продуктов с БД
Для того чтобы вывести весь список продуктов на устройство нам нужно получить все продукты с БД.
Создадим get_all_products.php со следующим содержимым:
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 >
Когда продукт не найден:
Обновление продукта в БД
Создайте файл с именем update_product.php со следующим содержимым:
else < >> else < $response[«success»] = 0; $response[«message»] = «Required field(s) is missing»; echo json_encode($response); >?>
Ответ JSON выше кода, когда продукт успешно обновлены будет следующим:
Удаление продукта с БД
Последняя операция удаления из базы данных. Создайте новый файл назовите delete_product.php и вставьте следующий код:
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 ответ будет таким:
Когда продукт не найден, то таким:
Теперь наконец-то мы можем приступить к программированию на Android. То что мы описали выше на PHP будем использовать как API слой. И наше приложение будет общаться с MySQL сервером по средством JSON формата и GET, POST запросов.
Источник: devcolibri.com
Приложение на C# + связка с MySQL базой данных
Привет всем кодерам! В этом мини-туториале мы с вами с нуля напишем десктопное приложение на С#, которое будет работать с базой данных. Это задание было дано учебной программой 11 класса НИШ ФМН г.Алматы.
Что мы будем для этого использовать?
- Среда программирования: Visual Studio 2017 (версия не имеет никакого значения)
- Языки: C# — для клиентской части приложения, MySQL — для работы с данными в базе данных нашего приложения
Что будет выполнять приложение?
Наше приложение будет добавлять, изменять, обновлять, удалять и запрашивать данные из базы данных каратистов. «А почему каратистов?» — спросите вы. Так потому что это самая родная для меня тема, вот и будем рассматривать данный пример.
Создание проекта
После того, как вы скачали Visual Studio себе на компьютер, вам следует создать проект.
Как это сделать?
Создать проект -> Visual C# -> Приложение Windows Forms -> *Выбираем название для проекта и его расположение* -> OK
Теперь у вас готов проект и можно приступать к работе!
Создание форм (Часть 1)
Теперь нам нужно создать графический интерфейс приложения через формы. Добавлять новые формы легко. Просто нажимаете правой кнопкой мыши на свой проект и выбираете «Добавить», как на скриншоте ниже:
Далее следует поработать над дизайном наших форм. Не будем сильно изощряться и сделаем максимально минималистичный дизайн:
Главное меню
Меню выбора
Меню выбора для редактирования
Форма для добавления нового пользователя
Так-с. Дальше пока что мы не пойдём, так как для начала нам нужно понять как всё будет работать. У нас есть форма для добавления каратиста, и нам еще нужны формы для создания запросов, для просмотра базы данных и для редактирования её. Но где сама база данных?
Её нет. Поэтому нам нужно немедленно её создать!
Создание базы данных
Переходим во вкладку «Средства» и выбираем «Подключиться к базе данных». Далее открывается окно «Добавить подключение», где в поле «Источник данных» мы выбираем «Файл базы данных Microsoft SQL Server (SqlClient)». Даём любое название файлу базы данных, в нашем случае — «IOGKF_members». Далее нажимаем кнопку «ОК» и в левой стороне экрана видим, как у нас добавилась новая база данных.
Раскрываем директорию с нашей базой данных и видим самую первую папку «Таблицы» — она нас и интересует. Жмём по ней правой кнопкой мыши и нажимаем «Добавить новую таблицу».
Можно создать таблицу двумя путями: 1) Конструктором 2) Через SQL код
Если вам лень делать её самим, то скопируйте следующий SQL код и вставьте его в поле с кодом у таблицы:
CREATE TABLE [dbo].[Members] ( [member_id] INT NOT NULL, [last_name] VARCHAR (20) NULL, [first_name] VARCHAR (20) NULL, [age] INT NULL, [rank] VARCHAR (3) NULL, [rank_value] INT NULL, [sensei] VARCHAR (20) NULL, [dojo] VARCHAR (20) NULL, PRIMARY KEY CLUSTERED ([member_id] ASC) );
Коротко о типах данных в SQL
- varchar — тот же самый String, то есть строка (в скобках пишем её максимальную длину)
- int — целые числа
- binary — тот же самый boolean, то есть True or False, только в SQL — это 1 и 0 соответственно
null — указываем может ли переменная быть пустой, то есть не содержать информации
primary key — первичный ключ, в данном случае это member_id. Таким образом, все значения member_id уникальны
После того как вы создали таблицу, нужно её сохранить. Нажмите ctrl + s или просто закройте файл с таблицей после чего у вас появится сообщение о сохранении таблицы.
Ок, теперь у нас есть база данных и таблица, где будет храниться информация о каратистах.
Создание форм (Часть 2) + код
Давайте напишем программный код для добавления каратистов в нашу базу данных. В моём проекте эта форма называется Form5 (у неё надпись «Add User» в предыдущих скриншотах). В классе этой формы пишем следующее:
public string conString = «Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\HP\Desktop\IOGKF\IOGKF\IOGKF_members.mdf;Integrated Security=True;Connect Timeout=30»;
Здесь мы создали строковую переменную conString и присвоили ей значение строки подключения базы данных. Чтобы посмотреть вашу строку подключения нажмите правой кнопкой мыши по базе данных и выберите «Свойства»:
Теперь два раза нажимаем на кнопку «Add» в конструкторе нашей формы и таким образом открываем код, который будет выполняться при её нажатии. Вот код метода, который выполняется при нажатии:
private void button1_Click(object sender, EventArgs e) < SqlConnection con = new SqlConnection(conString); con.Open(); if(con.State == System.Data.ConnectionState.Open) < string q = «insert into Members(member_id, last_name, first_name,» + » age, rank, rank_value, sensei, dojo)» + » values(‘» + textBox1.Text.ToString() + «‘,'» + textBox2.Text.ToString() + «‘,'» + textBox3.Text.ToString() + «‘,'» + textBox4.Text.ToString() + «‘,'» + comboBox2.Text.ToString() + «‘,'» + comboBox1.Text.ToString() + «‘,'» + comboBox3.Text.ToString() + «‘,'» + textBox8.Text.ToString() + «‘) «; SqlCommand cmd = new SqlCommand(q, con); cmd.ExecuteNonQuery(); MessageBox.Show(«Connection was successful!»); >con.Close(); >
Работа с базами данных SQLite
В Android имеется встроенная поддержка одной из распространенных систем управления базами данных — SQLite. Для этого в пакете android.database.sqlite определен набор классов, которые позволяют работать с базами данных SQLite. И каждое приложение может создать свою базу данных.
Чтобы использовать SQLite в Android, надо создать базу данных с помощью выражение на языке SQL. После этого база данных будет храниться в каталоге приложения по пути:
DATA/data/[Название_приложения]/databases/[Название_файла_базы_данных]
ОС Android по умолчанию уже содержит ряд встроенных бад SQLite, которые используются стандартными программами — для списка контактов, для хранения фотографий с камеры, музыкальных альбомов и т.д.
Основную функциональность по работе с базами данных предоставляет пакет android.database . Функциональность непосредственно для работы с SQLite находится в пакете android.database.sqlite .
База данных в SQLite представлена классом android.database.sqlite.SQLiteDatabase . Он позволяет выполнять запросы к бд, выполнять с ней различные манипуляции.
Класс android.database.sqlite.SQLiteCursor предоставляет запрос и позволяет возвращать набор строк, которые соответствуют этому запросу.
Класс android.database.sqlite.SQLiteQueryBuilder позволяет создавать SQL-запросы.
Сами sql-выражения представлены классом android.database.sqlite.SQLiteStatement , которые позволяют с помощью плейсхолдеров вставлять в выражения динамические данные.
Класс android.database.sqlite.SQLiteOpenHelper позволяет создать базу данных со всеми таблицами, если их еще не существует.
В SQLite применяется следующая система типов данных:
- INTEGER : представляет целое число, аналог типу int в java
- REAL : представляет число с плавающей точкой, аналог float и double в java
- TEXT : представляет набор символов, аналог String и char в java
- BLOB : представляет массив бинарных данных, например, изображение, аналог типу int в java
Сохраняемые данные должны представлять соответствующие типы в java.
Создание и открытие базы данных
Для создания или открытия новой базы данных из кода Activity в Android мы можем вызвать метод openOrCreateDatabase() . Этот метод может принимать три параметра:
- название для базы данных
- числовое значение, которое определяет режим работы (как правило, в виде константы MODE_PRIVATE )
- необязательный параметр в виде объекта SQLiteDatabase.CursorFactory , который представляет фабрику создания курсора для работы с бд
Например, создание базы данных app.db :
SQLiteDatabase db = getBaseContext().openOrCreateDatabase(«app.db», MODE_PRIVATE, null);
Для выполнения запроса к базе данных можно использовать метод execSQL класса SQLiteDatabase. В этот метод передается SQL-выражение. Например, создание в базе данных таблицы users:
SQLiteDatabase db = getBaseContext().openOrCreateDatabase(«app.db», MODE_PRIVATE, null); db.execSQL(«CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)»);
Если нам надо не просто выполнить выражение, но и получить из бд какие-либо данные, то используется метод rawQuery() . Этот метод в качестве параметра принимает SQL-выражение, а также набор значений для выражения sql. Например, получение всех объектов из базы данных:
SQLiteDatabase db = getBaseContext().openOrCreateDatabase(«app.db», MODE_PRIVATE, null); db.execSQL(«CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)»); Cursor query = db.rawQuery(«SELECT * FROM users;», null); if(query.moveToFirst())
Метод db.rawQuery() возвращает объект Cursor, с помощью которого мы можем извлечь полученные данные.
Возможна ситуация, когда в базе данных не будет объектов, и для этого методом query.moveToFirst() пытаемся переместиться к первому объекту, полученному из бд. Если этот метод возвратит значение false, значит запрос не получил никаких данных из бд.
Теперь для работы с базой данных сделаем простейшее приложение. Для этого создадим новый проект.
В файле activity_main.xml определим простейший графический интерфейс:
А в классе MainActivity определим взаимодействие с базой данных:
По нажатию на кнопку здесь вначале создается в базе данных app.db новая таблица users, а затем в нее добавляются два объекта в базу данных с помощью SQL-выражения INSERT.
Далее с помощью выражения SELECT получаем всех добавленных пользователей из базы данных в виде курсора Cursor.
Вызовом query.moveToNext() перемещаемся в цикле while последовательно по всем объектам.
Для получения данных из курсора применяются методы query.getString(0) и query.getInt(1) . В скобках в методы передается номер столбца, из которого мы получаем данные. Например, выше мы добавили вначале имя пользователя в виде строки, а затем возраст в виде числа. Значит, нулевым столбцом будет идти строкое значение, которое получаем с помощью метода getString() , а следующим — первым столбцом идет числовое значение, для которого применяется метод getInt() .
После завершения работы с курсором и базой данных мы закрываем все связанные объекты:
query.close(); db.close();
Если мы не закроем курсор, то можем столкнуться с проблемой утечки памяти.
И если мы обратимся к приложению, то после нажатия на кнопку в текстовое поле будут выведены добавленные данные:
Источник: metanit.com