Как создать программу для работы с базой данных

В первом руководстве этой серии, «Understanding RESTful API», мы рассмотрели, что из себя представляет архитектура REST, значение методов запроса HTTP и кодов состояния ответов и структуру конечной точки RESTful API. Во втором руководстве этой серии, «How to Set Up an Express API Server», мы рассмотрели, как создавать сервера и при помощи встроенного модуля HTTP Node.js, и при помощи фреймворка Express, а также как назначить маршруты для обработки запросов, выполняемых по различным URL-адресам.

В данный момент мы используем статические данные для отображения информации о пользователе в формате JSON при обращении к конечной точке API при помощи запроса по методу GET . В этом руководстве мы настроим базу данных MySQL для хранения данных, подключимся к ней из нашего приложения Node и добавим в API возможность использования методов GET , POST , PUT и DELETE для завершения реализации полноценного API.

Установка

На данный момент мы еще не использовали базу данных для хранения и выполнения манипуляций с какими-либо данными, так что мы установим ее сейчас. В этом руководстве мы будем использовать MySQL, и если у вас уже она установлена, то вы можете перейти к следующему разделу.

Программа с базой данных и интерфейсом PYQT5 на Python

Если же нет, то вы можете скачать MAMP для macOS и Windows, который предоставляет бесплатную локальную инфраструктуру веб-сервера и базу данных. После их скачивания откройте программу и нажмите Start Servers для запуска MySQL.

Помимо настройки MySQL нам также необходимо программное обеспечение с GUI для просмотра данных базы. Если вы пользуетесь Mac, то скачайте SequelPro, если Windows – то SQLyog. После скачивания и запуска MySQL вы можете воспользоваться SequelPro или SQLyog для подключения к локальному серверу при помощи имени root и пароля root по 3306 порту.

Как только разобрались с этим, мы можем перейти к созданию базы данных для нашего API.

Создаем базу данных

В программе для просмотра вашей базы добавьте новую базу данных и назовите ее api . Убедитесь, что MySQL запущена, или у вас не получится подключиться к локальному серверу.

После создания базы api перейдите в нее и выполните следующий запрос для создания новой таблицы.

CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

Источник: code.tutsplus.com

SQLite + C#

Follow us on Google Plus Follow us on rss

В данной статье рассмотрим работу с SQLite из программы на языке C#. Основное внимание будет уделено конфигурированию проекта в MS Visual Studio для работы с SQLite, созданию базы данных, созданию таблиц и работе с таблицами: чтение/запись данных.

Исходный код доступен на GitHub.

Как работать с базой данных из Python

Введение в SQLite

Если кратко, то SQLite – это кроссплатформенная встраиваемая СУБД. Свойство кроссплатформенности я думаю пояснять не нужно, а вот с понятием “встраиваемая” наверное стоит немного разобраться. Существуют СУБД, которые представляют собой клиент-серверное приложение – это наиболее знакомый вариант.

Например Microsoft SQL Server, MySQL, PostgreSQL, различные NoSQL варианты, которых на сегодняшний день появилось огромное количество. Суть их в том, что есть выделенное приложение – сервер, которое принимает запросы от клиентов и выполняет их, оно непосредственно занимается записью/чтением данных на диск и предоставляет различные функции типа репликации и т.п. Встраиваемая СУБД не имеет выделенного сервера, ее движок включается в приложение в виде библиотеки и предоставляет доступ к базе через специализированный API.

Читайте также:
Текстовый редактор это программа для создания

На сегодняшний день SQLite является одной из самых популярных решений такого типа. Она используется практически повсеместно: в embedded приложениях, мобильных телефонах, различных платформах и т.д. Например браузер Google Chrome использует SQLite для хранения Cookies. SQLite обладает феноменальной надежностью (зачастую в ущерб производительности, если её неправильно “готовить”), поэтому, несмотря на то, что она является открытой, разработчики практически не принимают сообщения об ошибках.

Первое, что необходимо сделать для начала работы с SQLite – это скачать его с официального сайта (ссылка). Для приложений на платформе .NET есть возможность работать с SQLite через ADO.NET провайдер под названием System.Data.SQLite. Зайдя на страницу загрузки новичок будет наверное сбит с толку обилием возможных вариантов System.Data.SQLite. Попробуем разобраться.

  • если в названии пакета для скачивания нет слова “static”, то это значит, что на машине разработчика и пользователя приложения должна стоять Microsoft Visual C++ Runtime Library (2005, 2008, 2010, 2012, 2013 или 2015).
  • если в названии есть слово “setup”, то он включает в себя и автоматически устанавливает на машину Microsoft Visual C++ Runtime Library.
  • пакет со словом “bundle”, используется в том случае, если библиотеки необходимо разместить в Global Assembly Cache

Сами разработчики рекомендуют брать во внимание следующие моменты при выборе дистрибутива SQLite:

  • рекомендуется использовать XCOPY развертывание (простое копирование файлов) с автоматической подгрузкой нужных библиотек (определятся разрядностью процессора) (Native Library Pre-Loading);
  • использовать вариант работы с Global Assembly Cache не рекомендуется, поэтому пакет со словом “bundle” качаем если только это действительно необходимо;
  • использовать пакет со словом “static” на машине разработчика не рекомендуется, и вообще не стоит устанавливать такой пакет, если на машине развернута Microsoft Visual C++ Runtime Library;
  • используется пакет с версией .NET, которая используется в вашем приложении;
  • следите за тем, чтобы версия архитектуры процессора пакета и целевой машины совпадали.

Структура папки, в которой располагается приложение, для поддержки режима автоматической подгрузки нужных библиотек (Native Library Pre-Loading) представлена ниже

  • App.exe (опционально, приложение)
  • App.dll (опционально, библиотека приложения)
  • System.Data.SQLite.dll (требуется, core сборка)
  • System.Data.SQLite.Linq.dll (опционально, LINQ сборка)
  • System.Data.SQLite.EF6.dll (опционально, EF6 сборка)
  • x86SQLite.Interop.dll (требуется, x86 native interop сборка)
  • x64SQLite.Interop.dll (требуется, x64 native interop сборка)

Работа с SQLite из C#

Создадим простое приложение, демонстрирующее работу с SQLite СУБД. В качестве среды разработки будем использовать Visual Studio 2015 Community Edition.

Подготовка

Первое, что мы сделаем, это скачаем с официального сайта пакеты Precompiled Binaries for 64-bit Windows (.NET Framework 4.0) и Precompiled Binaries for 32-bit Windows (.NET Framework 4.0). На момент написания статьи это была версия sqlite-netFx40-binary-x64-2010-1.0.101.0.zip и sqlite-netFx40-binary-Win32-2010-1.0.101.0.zip

В Visual Studio создадим проект Windows Forms Application с именем SQLiteSample.

После этого необходимо собрать проект, для того, чтобы IDE создала необходимый набор каталогов. В нашем случае интерес представляет binDebug. В него добавим необходимый набор файлов, как показано выше в описании структуры папок при использовании подхода Native Library Pre-Loading.

Добавим в проект ссылку на библиотеку System.Data.SQLite.dll, предварительно скопировав ее в папку SQLiteSampleSQLiteSamplelib. Для этого на панели меню выбрать Project/Add Reference… В открывшемся окне нажать кнопку Browse… и выбрать файл System.Data.SQLite.dll. Что привет к появлению нового Reference в окне Solution Explorer.

sqlite_c_sharp_pic1

Приложение будет представлять собой форму для работы с базой данных, содержащей имена писателей и названия их произведений. Внешний вид представлен на рисунке ниже.

Читайте также:
Программа первичной настройки astra linux

sqlite_c_sharp_pic2

На панели инструментов имеются несколько кнопок:

  • Create – создание БД и таблицы, если они ещё пока не создана;
  • Connect – подключение к БД;
  • Read all – считать все записи из таблицы;
  • Clear table – очистить таблицу формы;
  • Add – добавить запись.

В строке состояния отображается статус:

  • Disconnected – нет связи с БД;
  • Connected – есть связь с БД.

Создание базы данных, таблиц и работа с данными

Сейчас более подробно рассмотрим процессы создания базы данных, таблиц и работы с записями таблицы (чтение и добавление). Каждая из этих задач будет решаться в рамках метода, вызываемого при нажатии на соответствующую кнопку.

Предварительно подключим в нашем проекте пространство имен System.Data.SQLite и добавим переменные для связи с базой данных. Таким образом наша программа будет иметь вид.

using System; using System.Windows.Forms; using System.Data.SQLite; using System.IO; using System.Data; namespace SQLiteSample < public partial class Form1 : Form < private String dbFileName; private SQLiteConnection m_dbConn; private SQLiteCommand m_sqlCmd; public Form1() < InitializeComponent(); > private void Form1_Load(object sender, EventArgs e) < m_dbConn = new SQLiteConnection(); m_sqlCmd = new SQLiteCommand(); dbFileName = «sample.sqlite»; lbStatusText.Text = «Disconnected»; >> >

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

Создание БД и таблицы в “SQLite Sample”, если они ещё не созданы, осуществляется при нажатии на кнопку Create.

private void btCreate_Click(object sender, EventArgs e) < if (!File.Exists(dbFileName)) SQLiteConnection.CreateFile(dbFileName); try < m_dbConn = new SQLiteConnection(«Data Source=» + dbFileName + «;Version=3;»); m_dbConn.Open(); m_sqlCmd.Connection = m_dbConn; m_sqlCmd.CommandText color: #234a97;»>Catalog (id INTEGER PRIMARY KEY AUTOINCREMENT, author TEXT, book TEXT)»; m_sqlCmd.

ExecuteNonQuery(); lbStatusText.Text = «Connected»; > catch (SQLiteException ex) < lbStatusText.Text = «Disconnected»; MessageBox.Show(«Error: » + ex.Message); > >

В данном методе, мы сначала проверяем, существует ли файл с именем “sample.sqlite” (переменная dbFileName), если его нет, то создаем. Этот файл фактически и является базой данных.

После этого мы подключаемся к созданной БД:

m_dbConn = new SQLiteConnection(«Data Source color: #0b6125;»>»;Version=3;»); m_dbConn.Open();

Для выполнения SQL команд будем использовать переменную m_sqlCmd, чтобы это стало возможным в первую очередь зададим объект класса SqlConnection, используемый SQLiteCommand:

m_sqlCmd.Connection = m_dbConn;

После выполним запрос на создание таблицы:

m_sqlCmd.CommandText = «CREATE TABLE IF NOT EXISTS Catalog (id INTEGER PRIMARY KEY AUTOINCREMENT, author TEXT, book TEXT)»; m_sqlCmd.ExecuteNonQuery();

Подключение к уже существующей таблице

Подключение к уже существующей таблице осуществляется при нажатии на кнопку Connect. Код метода очень похож на тот, что мы разбирали выше, поэтому на нем мы останавливаться не будем.

private void btConnect_Click(object sender, EventArgs e) < if (!File.Exists(dbFileName)) MessageBox.Show(«Please, create DB and blank table (Push «Create» button)»); try < m_dbConn = new SQLiteConnection(«Data Source=» + dbFileName + «;Version=3;»); m_dbConn.

Open(); m_sqlCmd.Connection = m_dbConn; lbStatusText.Text = «Connected»; > catch (SQLiteException ex) < lbStatusText.Text = «Disconnected»; MessageBox.Show(«Error: » + ex.Message); > >

Чтение данных

Чтение данных осуществляется при нажатии на кнопку Read all, при этом из существующей БД считываются все данные и выводятся в таблицу.

private void btReadAll_Click(object sender, EventArgs e) < DataTable dTable = new DataTable(); String sqlQuery; if (m_dbConn.State != ConnectionState.Open) < MessageBox.Show(«Open connection with database»); return; > try < sqlQuery = «SELECT * FROM Catalog»; SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlQuery, m_dbConn); adapter.

Fill(dTable); if (dTable.Rows.Count > 0) < dgvViewer.Rows.Clear(); for (int i = 0; i < dTable.Rows.Count; i++) dgvViewer.Rows.Add(dTable.Rows[i].ItemArray); > else MessageBox.Show(«Database is empty»); > catch (SQLiteException ex) < MessageBox.

Show(«Error: » + ex.Message); > >

Читайте также:
Программа для того чтобы из видео вырезать музыку

Разберем этот метод более подробно. Первое, что необходимо сделать, это проверить наличие связи с БД:

if (m_dbConn.State != ConnectionState.Open) < MessageBox.Show(«Open connection with database»); return; >

Данные, считанные из базы, мы будем помещать в таблицу DataTable, а из неё будем из перегружать в элемент DataGridView, расположенный на нашей форме. Для этого создадим SQL запрос и адаптер, который будет выполнять запрос и передавать полученные от СУБД данные в таблицу

sqlQuery = «SELECT * FROM Catalog»; SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlQuery, m_dbConn); adapter.Fill(dTable);

Если таблица не пуста, перенесем данные из нее в элемент dgvViewer.

if (dTable.Rows.Count > 0) < dgvViewer.Rows.Clear(); for (int i = 0; i < dTable.Rows.Count; i++) dgvViewer.Rows.Add(dTable.Rows[i].ItemArray); > else MessageBox.Show(«Database is empty»);

Добавление данных в БД

Добавление данных в БД осуществляется при нажатии на кнопку Add. При этом будет вызван соответствующий метод.

private void btAdd_Click(object sender, EventArgs e) < if (m_dbConn.State != ConnectionState.Open) < MessageBox.Show(«Open connection with database»); return; > AddDataToDb addData = new AddDataToDb(); if (addData.

ShowDialog() == DialogResult.OK) < try < m_sqlCmd.CommandText color: #234a97;»>Catalog (‘author’, ‘book’) values (‘» + addData.Author + «‘ , ‘» + addData.Book + «‘)»; m_sqlCmd.ExecuteNonQuery(); > catch (SQLiteException ex) < MessageBox.Show(«Error: » + ex.Message); > > >

В нем мы также, вначале проверяем, есть ли связь с БД, после этого создает диалоговое окно для ввода имени

12 комментариев

Код хорош. Но он работает только с одной таблицей. А В БД их может быть несколько

В чем сложность все то же самое сделать с несколькими таблицами? Если у вас верно выстроена связь, то это проще простого.

Возможно имел ввиду, что хотел увидеть коннектор вытащенный в отдельный класс, что бы не заниматься его инициацией на каждой форме.

Здравствуй Артём можешь написать программу или бота для ТГ чтобы бот работал с Базами Данных. И по запросу выдавал информацию. Например Запрос: +79001234567 и бот или программа выдавала результаты насчёт этого номера которые хранятся в БД

Да конечно могу. Только я не Артём, а Андрей)

Добрый день, Андрей!
Можешь написать программу на c# и базу данных в sql для салона красоты?
В программе должен быть дизайн, должна работать авторизация, регистрация и редактирование.

Добрый вечер. Да можно, свяжитесь со мной или по почте или в вк.
Пришли почту

Это ужасная реализация. Вам в базу данных можно сделать инъекцию и удалить всю базу данных. В добавлении и изменении просто выполняется sql команда. Человек может просто дописать команду, а после написать дроп датабейс и все, базы нет.

Ну и нафига удалять негативные комментарии, если они правдивы?) Чему ты учишь, выполнять команды в коде? База имеет 0 защиты, иньекция и данных нету

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

Конечно, тут нет защиты от инъекций, потому что так никто вообще уже не работает с БД, уже да же ADO.NET не увидишь, в основном везде EF используется. Если вы это не поняли, ну извините. К чему ваши комментарии я так и не понял, в своем приложении каждый разработчик должен самостоятельно адаптировать код, а не копипастить.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru