Язык структурированных запросов SQL. Использование SQL в прикладном программировании
Изучение особенностей языка структурированных запросов при использовании его в прикладном программировании. Сравнение реализации связи между SQL и языками программирования высокого уровня. Проектирование базы данных и системы управления базами данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.01.2016 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Рисунок 9: Инструменты для работы с базами данных в Lazarus (желтым выделены наиболее важные для работы с MySQL)
Для успешного подключения к БД и работы с ней на форме необходимо разместить следующие четыре объекта: MySQL50Connection (число в названии объекта должно соответствовать выпуску базы данных), SQLQuery, DataSource, SQLTransaction. Первый из объектов выступает главным звеном цепи, подключающимся к самой СУБД. SQLQuery содержит в себе SQL-запрос, а также актуальную выборку из таблиц БД, DataSource является источником данных для SQLQuery, а SQLTransaction - это транзакция, также связанная с запросами из SQLQuery. В каждом из этих объектов должны быть ссылки на другие, а в MySQL50Connection также указаны основные данные подключения к БД: адрес хоста, имя пользователя и пароль.
В реализованном тестовом приложении данные для подключения вводятся в специальные текстовые поля на форме.
Для вывода результатов запроса был добавлен объект класса Tmemo - набор текстовых строк. Программа процедурально выводит в него выборку, полученную из SQLQuery. Для ввода нового запроса был добавлен еще один объект класса Tmemo.
Прежде чем отправлять запросы к БД, необходимо установить соединение. Для этого используется изменение значения свойства 'Connected' у MySQL50Connection на 'true':
MySQL50Connection1.Connected := true
Кроме установки подключения необходимо выполнить и другие действия (активация транзакции, заполнение тела запроса и так далее). Все эти действия указаны в полном листинге тестовой программы в приложении В.
Как показала практика, составление и отправка запросов не представляют сложности при использовании Lazarus: обычная текстовая строка, которую пользователь вводит в текстовое поле, по нажатию кнопки передается в объект SQLQuery, которые затем отправляет ее по соединению в СУБД. Результат (в том числе, текст возможной ошибки) возвращается в этот же объект, из которого программа затем может получить необходимые данные.
Этот принцип работает не только с выборкой, но и с редактированием, и с удалением записей. Более того, в реализованной программе отсутствует зависимость от конкретной таблицы - процедуры построены таким образом, что программа сама формирует выводимый список, в зависимости от того, с какой таблицей работает. Однако в силу тестовой природы этого решения было решено не заострять внимание на внешнем виде графической оболочки - главное, чтобы программа выполняла поставленные функции.
Работа с Pascal и Lazarus дала представление об удобстве как языка, так и программной среды в случае проектирования программы небольшого масштаба и сложности. Кроме возможности подключить СУБД MySQL Lazarus позволяет теми же стандартными средствами подключаться к другим системам управления базами данных, что является несомненным плюсом.
На рисунке 10 изображено окно получившейся программы с результатами выборки:
Размещено на http://www.allbest.ru/
Рисунок 10: Окно тестовой программы, созданной в Lazarus
3.3 Использование SQL в C++ (на примере MS Visual Studio)
Язык C++ предоставляет широкие возможности для разработки проектов любой сложности, однако изучение всех сторон его природы может потребовать много времени. Особенным преимуществом этого языка является возможность подключения множества дополнительных файлов и библиотек, которых конкретно для C++ было разработано огромное количество.
Тем не менее, именно подключение внешних компонентов может стать узким местом при разработке для этого языка. В частности, для работы с СУБД MySQL приложение должно использовать файл mysql.h и еще несколько библиотек MySQL кроме него, однако особенности среды разработки MS Visual Studio могут помешать программе отыскать правильные файлы, если не указать путь к ним явно. Именно такая проблема и возникла при создании проекта на C++ в Visual Studio. Решена эта проблема была добавлением необходимых библиотек (libmysql.dll, libmysql.lib, libmysqld.dll, libmysqld.lib) из каталога с сервером MySQL в корневой каталог проекта [22].
Разработанное тестовое приложение является консольной программой Windows - по причине того, что в рамках данной работы необходимо продемонстрировать основные возможности работы языка SQL в рамках прикладного программирования, а также сравнить различные способы интеграции этого языка в приложения, графический интерфейс можно в принципе опустить.
После успешного добавления файлов windows.h, winsock.h и mysql.h с помощью стандартного служебного слова include, проект может работать с СУБД MySQL посредством функций, взятых из специально разработанных для этого библиотек.
Для подключения к базе данных создается коннектор:
MYSQL *<имя_переменной>;
Затем выполняется подключение как таковое посредством следующих функций:
conn = mysql_init(NULL);
//функция подключения выведена в оператор ветвления для проверки успешного подключения
if (!mysql_real_connect(conn, "localhost", "root", "root", "test", NULL, NULL, 0))
{
fprintf(stderr, "Ошибка: невозможно подключиться к базе данных\n");
}
После успешного подключения можно отсылать запросы к базе данных посредством функции mysql_query.
Несмотря на кажущуюся бедность функционала в сравнении с Lazarus, C++, даже в варианте консольного приложения, предоставляет широкие возможности для работы с базами данных. Возможно, именно по причине широких возможностей этого языка при работе в нем с базами данных можно столкнуться с многочисленными ошибками. Кроме того, следует отметить, что, будучи разработкой компании Microsoft, Visual Studio предоставляет куда больше возможностей по работе с СУБД той же самой фирмы (Microsoft SQL Server, MS Access)[7].
Полный листинг тестовой программы с возможностью посылать SQL-запросы к базе данных можно найти в приложении.
3.4 Использование SQL в ABAP (на примере SAP GUI)
В качестве третьего примера была взята достаточно специфичная технология - язык программирования высокого уровня ABAP на платформе, для которой он и был разработан - SAP GUI.
SAP GUI сам по себе является обширным инструментарием работы с разнообразными бизнес-системами SAP - аналогом отечественного 1C. SAP GUI позволяет как администрировать систему, так и вести разработки в ней. Очевидно, что всякое бизнес-приложение в той или иной мере должно обращаться к базам данных - отсюда следует, что технология, на которой приложение построено, должна поддерживать общение с базами данных на том или ином языке.
В случае ABAP технология была интегрирована в язык еще на стадии разработки - для осуществления SQL-запросов не требуется подключать никаких внешних файлов. Более того, сама семантика языка ABAP не делает различий между фактической таблицей, существующей в базе данных, и временной таблицей, созданной в процессе выполнения программы - в обоих случаях обращение к таблицам будет вестись посредством SQL-запросов. Это многократно облегчает задачи программистов и позволяет достичь высоких результатов при программировании обращений к базам данных [20].
Тем не менее, ABAP имеет множество недостатков. В первую очередь, это морально устаревшая концепция, сама архитектура языка, который не обладает той же гибкостью, что C или C++. Недостатки эти, однако, слабо связаны с SQL и технологией обращения к БД, так что в данном случае могут быть опущены.
Кроме прочего, системы SAP (по сути, единственный род приложений, использующих ABAP) подключаются к базам данных напрямую, посредством специально для этого разработанных технологий. Это значит, что при наличии рабочей системы SAP, подключенной к корректно построенной базе данных, разработка кода может вестись без оглядки на проблемы с подключением, различные коннекторы и объекты, посредством которых осуществляется соединение, - эта часть системы абстрагирована от пользовательских разработок. Таким образом, прямо в теле кода ABAP можно записывать SQL-запросы, которые при выполнении программы будут выполнены в том порядке, в каком они идут. При этом не нужно описывать фактические таблицы наравне с переменными - они берутся из общего списка таблиц, релевантного для всей системы [23].
На рисунке 11 продемонстрирован фрагмент кода, где видно, что вместе с SQL-запросами выполняются обычные операторы языка, а сами запросы применяются как для таблиц базы данных, так и для внутренних таблиц, созданных по ходу выполнения программы.
Размещено на http://www.allbest.ru/
Рисунок 11: Фрагмент кода на языке ABAP
ABAP поддерживает большинство функций языка SQL. Кроме широких возможностей ABAP программист может расширить его функционал посредством привязки к системе решений, построенных на других технологиях. Обновление SAPUI5 является прекрасным примером такой связки: WEB-часть проекта, написанная на Javascript, отправляет и получает данные из ABAP. При этом на стороне Javascript могут формироваться SQL-запросы, которые затем отправляются в систему через технологию Gateway. Однако, как и было замечено, ABAP является специфическим языком, созданным специально для систем SAP. Его применение за пределами таких систем, в принципе, невозможно, и в данной работе язык был приведен лишь в качестве примера того, как глубоко SQL может быть интегрирован с технологией программирования.
3.5 Сравнение результатов использования SQL в различных языках программирования
Из трех приведенных примеров каждый язык программирования обладает яркими особенностями использования в нем SQL-запросов.
Pascal в среде разработки Lazarus отличается удобством использования и наглядностью - вследствие объектно-ориентированного подхода к программированию. Среди заготовленных классов коннекторов есть способные подключаться к различным СУБД - не только MySQL. Классы запросов получают от базы данных подробную информацию о том, как был выполнен запрос, что позволяет видеть текст ошибки при выполнении программы, даже если не были прописаны соответствующие исключения.
Язык C++, в свою очередь, отличается фундаментальностью инструментов - для подключения к базе данных необходимо использовать внешние библиотеки, описывать подключение и предугадывать все возможные ошибки. Это добавляет сложности процессу разработки. Тем не менее, C++ является чрезвычайно многогранным средством, с помощью которого можно реализовать масштабные проекты.
Язык ABAP представляет собой далекое от универсальности средство, предназначенное, в принципе, для работы с базами данных в бизнес-среде SAP. Это налагает жесткие ограничения на возможности языка как такового, однако уровень интеграции SQL в него так велик, что никаких дополнительных действий для подключения к базе данных внутри кода, в принципе, делать не нужно - SQL-запросы пишутся как часть общей программы и выполняются так же. Таким образом можно сказать, что Lazarus наиболее подходит для разработок малых и средних приложений, работающих с базами данных, C++ в среде Visual Studio - для более крупных программ, а ABAP, будучи самым удобным в плане работы с SQL, можно использовать только в рамках SAP.
ЗАКЛЮЧЕНИЕ
В первом разделе данной курсовой работы была рассмотрена концепция баз данных, выведены причины формирования этой технологии из файловых систем, даны общие определения из разных источников и на их основе выведено общее определение базы данных, как набора структурированных и доступных для дальнейшей обработки данных.
Также были описаны основные характеристики баз данных: модели данных, приведены основные разновидности моделей с описанием их особенностей; тип данных, которые содержатся в базе; фактор распределенности базы данных.
Из наиболее популярных моделей данных в современной информационной науке отдельное положение занимает реляционная, основанная на отношениях (таблицах) и связях между ними. Имея большие преимущества в контексте использования на практике, при информационном моделировании реальных объектов и связей между ними, реляционная модель применяется в проектировании баз данных чаще всего.
После определения баз данных и их основных свойств было дано описание систем управления базами данных - СУБД: это программный инструмент создания, управления и доступа к базе данных того типа, для которого была создана данная СУБД. По причине распространенности реляционных баз данных наибольшее развитие получили именно реляционные СУБД. Среди них: Microsoft Access, MySQL, Firebird и другие.
Остановившись на реляционных базах данных была подробнее описана их модель: отношения, связи между ними, принципы существования такой модели. Только обладая знаниями в теории реляционных БД, можно переходить к более узким дисциплинам - в частности, языку SQL. Исходя из особенностей реляционной модели, можно прийти к выводу о том, что она является наиболее подходящей для наглядного проектирования базы данных и понятна среднему пользователю, но имеет также некоторые недостатки, из которых главным является избыточность данных. Перед изучением языка SQL был показан процесс концептуального моделирования реляционной базы данных с использованием схемы «сущность - связь» либо языка UML.
Язык SQL, как основной стандарт обращения к реляционным базам данных, получил большое развитие. За годы его совершенствования было создано несколько стандартов, а также диалектов, разработанных специально для конкретных технологий.
Будучи языком запросов, а не языком программирования в чистом виде, SQL имеет ограниченные возможности семантики, если говорить о различных сложных конструкциях и логических операциях ветвления либо цикла, однако его недостатки можно компенсировать возможностями языков прикладного программирования, с которыми SQL успешно интегрируется.
После общего описания SQL было показано, как с помощью этого языка создавать базы данных и таблицы, работать с записями таблиц. Также были описаны некоторые особенности работы с SQL в различных СУБД.
В третьей части работы были продемонстрированы возможности работы с SQL в различных языках программирования высокого уровня. Для сравнения были взяты три языка - каждый в своей среде разработки, - и изучено подключение к базам данных и использование SQL-запросов. В случае первых двух языков (Pascal и C++) были созданы тестовые приложения, листинг которых находится в соответствующих приложениях. В случае третьего языка (ABAP) за неимением возможности разработать отдельное приложение был продемонстрирован существующий код.
Из трех языков наиболее удобным в использовании видится Pascal под управлением Lazarus; C++, как и в случае с другими аспектами этого языка - не только подключением к базам данных - обладает широкими возможностями, но сложен на практике; в ABAP наиболее естественно интегрирован SQL, но возможности самого языка программирования несколько ограничены. В процессе выполнения курсовой работы были выполнены следующие задачи:
1) даны определения баз данных и СУБД, перечислены и раскрыты важнейшие их особенности; составлена классификация баз данных и, соответственно, систем управления базами данных по различным признакам;
2) описаны различные модели данных, перечислены характеристики БД (базы данных) и СУБД (отношения, операции, ключи и так далее). Дано краткое описание языка UML (Unified Modeling Language), использующегося для проектирования реляционной БД, а также описан процесс проектирования базы данных;
3) дана характеристика языка SQL; перечислены его особенности в рамках теории; дано поэтапное описание (с примерами) создания базы данных и таблицы, перечислены основные операторы языка; указаны особенности использования SQL в различных СУБД;
4) изучена теоретическая возможность использования SQL в прикладном программировании; перечислены достоинства и недостатки такой концепции;
5) более подробно описано практическое использование SQL в различных языках программирования, продемонстрированы примеры, дана сравнительная характеристика.
Учитывая, что все поставленные задачи решены, можно обоснованно утверждать, что главная цель исследования достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. ГОСТ Р ИСО/МЭК ТО 10032-2007. Эталонная модель управления данными [Текст]. - Введ. 27.12.2007. - М.: Стандартинформ, 2009. - 40 с.
2. Баженова И.Ю. Разработка распределенных приложений баз данных: Курс лекций. - М.: МГУ им. М.В. Ломоносова, 2006. - 203 с.
3. Баканов В.М. Введение в язык SQL запросов к базам данных: Учебное пособие. - М.: МГАПИ, 2002. - 61 с.: ил.
4. Бураков П.В., Петров В.Ю. Введение в системы баз данных: Учебное пособие. - СПб: СПбГУ ИТМО, 2010. - 128 с.
5. Гудов А.М., Шмакова Л.Е. Введение в язык структурированных запросов SQL: Учебное пособие. - Кемерово, Кемеровский госуниверситет, 2001. - 118 с.
6. Дьяков И.А. Базы данных. Язык SQL: Учебное пособие. - Тамбов: ТГТУ, 2004. - 80 с.
7. Зиборов В.В. MS Visual C++ 2010 в среде .NET. Библиотека программиста. - Спб.: Питер, 2012. - 320 с.: ил.
8. Кетков Ю.Л., Кетков А.Ю. Свободное программное обеспечение. FREE PASCAL для студентов и школьников. - СПб.: БХВ-Петербург, 2011. - 384 с.: ил.
9. Копейкин М.В., Спиридонов В.В., Шумова Е.О. Базы данных. Основы SQL реляционных баз данных: Учебное пособие. - СПб.: СЗТУ, 2005. - 160 с.
10. Э.В. Сысоев, Е.В. Бурцева. Базы данных: лекции к курсу. - Тамбов : Изд-во Тамб. гос. техн. ун-та, 2007. - 48 с.
11. Токмаков Г. П. Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML: учебное пособие / Г. П. Токмаков. - Ульяновск: УлГТУ, 2010. ? 192 с.
12. Токмаков Г. П. Базы данных и знаний. Проектирование баз данных по технологии «клиент-сервер» и разработка клиентских приложений: Учебное пособие / Г.П. Токмаков. - Ульяновск; УлГТУ, 2005. - 143 с.
13. Фаро С., Паскаль Л. Рефакторинг SQL-приложений. - Пер. с англ. - СПб: Символ-Плюс, 2009. - 336 с.: ил.
14. Шварц Б., Зайцев П., Ткаченко В., Заводны Дж., Ленц А., Бэллинг Д. MySQL. Оптимизация производительности, 2-е издание. - Пер. с англ. - Спб.: Символ-Плюс, 2010. - 832 с.: ил.
15. Michael Alexander, Richard Kusleika. Access 2013 Bible. - New Jersey: Wiley, 2013 - 1296 p.
16. Grant Allen, Mike Owens. The Definitive Guide to SQLite, Second Edition. - New York: Apress, 2010. - 368 p.
17. Donald Bales. Beginning Oracle PL/SQL. Second edition. - New York: Apress, 2015. - 492 p.
18. Alan Beaulieu. Learning SQL, Second Edition. - California: O'Reilly Media, Inc., 2009. - 338 p.
19. Paul DuBois. MySQL (5th Edition) (Developer's Library). - Massachusetts: Addison-Wesley Professional, 2013. - 1176 p.
20. Ken Greenwood. Sams Teach Yourself ABAP/4 in 21 Days. - Indiana: Sams, 1998. - 752 p.
21. Ken Jones. Microsoft® SQL Server® 2008 T-SQL Fundamentals. - Washington: Microsoft Press, 2008. - 688 p.
22. Bjarne Stroustrup. Programming: principles and practice using C++. Second edition. - Massachusetts: Addison-Wesley Professional, 2014. - 1312 p.
23. James Wood. Object-Oriented Programming with ABAP Objects. 2nd, updated and revised edition 2016. - Massachusetts: SAP Press, 2015 - 470 p.
24. Базы данных URL: http://www.site-do.ru/db/db1.php, свободный доступ.
25. Википедия - свободная энциклопедия [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/Данные, свободный доступ.
26. CIT Forum URL: http://citforum.ru/, свободный доступ.
27. Википедия - свободная энциклопедия [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/SQL, свободный доступ.
ПРИЛОЖЕНИЯ
Приложение А. Листинг SQL-запросов для создания базы данных и таблиц в ней, заполнения таблиц и выборки по указанным полям
CREATE DATABASE Test_SQL_1 CHARACTER SET utf8 COLLATE utf8_general_ci;USE Test_SQL_1;
CREATE TABLE person
(person_id SMALLINT UNSIGNED,
fname VARCHAR(20),
lname VARCHAR(20),
gender CHAR(1),
birth_date DATE,
street VARCHAR(30),
city VARCHAR(20),
state VARCHAR(20),
country VARCHAR(20),
postal_code VARCHAR(20),
CONSTRAINT pk_person PRIMARY KEY (person_id)
);ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;ALTER TABLE person MODIFY gender enum('M','F');
INSERT INTO person
(person_id, fname, lname, gender, birth_date)
VALUES (null, 'William','Turner', 'M', '1972-05-27');
INSERT INTO person
(person_id, fname, lname, gender, birth_date,
street, city, state, country, postal_code)
VALUES (null, 'Susan','Smith', 'F', '1975-11-02',
'23 Maple St.', 'Arlington', 'VA', 'USA', '20220');
CREATE TABLE favorite_food
(person_id SMALLINT UNSIGNED,
food VARCHAR(20),
CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food),
CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id)
REFERENCES person (person_id)
);
INSERT INTO favorite_food (person_id, food)
VALUES (1, 'pizza');
INSERT INTO favorite_food (person_id, food)
VALUES (1, 'cookies');
INSERT INTO favorite_food (person_id, food)
VALUES (1, 'nachos');
SELECT person_id, fname, lname, birth_date
FROM person
WHERE person_id = 1;
SELECT food
FROM favorite_food
WHERE person_id = 1
ORDER BY food;
Приложение Б
Список основных операторов и служебных слов SQL
Оператор |
Назначение |
|
CREATE |
Создание таблицы или базы данных |
|
ALTER TABLE |
Изменение полей таблицы |
|
DROP |
Удаление базы данных или таблицы |
|
SELECT |
Выборка из таблицы или таблицы |
|
INSERT |
Добавить строку в таблицу |
|
UPDATE |
Изменить данные некоторой строки |
|
DELETE |
Удалить строки или таблицу |
Служебное слово |
Назначение |
|
FROM |
Указывает таблицу-источник выборки |
|
WHERE |
Указывает условие по некоторому полю |
|
ORDER BY |
Упорядочивает по некоторому полю |
|
GROUP BY |
Вычисляет количество значений некоторого поля, по значению другого |
|
HAVING |
Схож с WHERE, но используется с агрегатными данными |
|
BETWEEN |
Указывает, что значение поля должно быть между некоторыми границами |
|
IN |
Указывает, что значение поля должно принадлежать некоторому множеству |
|
LIKE |
Производит поиск строки по маске |
|
ALL |
Сравнивает значение поля со всеми значениями столбца |
|
DISTINCT |
Удаляет повторяющиеся записи из выборки |
Приложение В. Листинг тестовой программы, разработанной в Lazarus
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, mysql56conn, mysql50conn, sqldb, db, FileUtil, Forms,
Controls, Graphics, Dialogs, StdCtrls, ComCtrls, DbCtrls, DBGrids, Grids;
type
{ TMySQLtest }
TMySQLtest = class(TForm)
ButtonExecute: TButton;
ButtonConnect: TButton;
ButtonExit: TButton;
DataSource1: TDataSource;
EditHost: TEdit;
EditName: TEdit;
EditPassword: TEdit;
Host: TLabel;
Memo1: TMemo;
EditSQLCommand: TMemo;
MySQL50Connection1: TMySQL50Connection;
SQLCommand: TLabel;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
StatusBar1: TStatusBar;
UserName: TLabel;
Password: TLabel;
procedure ButtonConnectClick(Sender: TObject);
procedure ButtonExecuteClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
MySQLtest: TMySQLtest;
implementation
{$R *.lfm}
{ TMySQLtest }
Procedure PrepareMemo;
//Глобальная процедура для подготовки Memo1 (очистка строк и заполнение заголовков полей)
var
i: integer;
TempString: String;
begin
MySQLtest.SQLQuery1.Open;
TempString := '';
i := 0;
MySQLtest.Memo1.Clear;
MySQLtest.Memo1.Lines[0] := inttostr(MySQLtest.SQLQuery1.FieldCount);
While i < MySQLtest.SQLQuery1.FieldCount-1 do
begin
TempString := TempString + MySQLtest.SQLQuery1.Fields[i].FieldName + '.......';
inc(i);
end;
TempString := TempString + MySQLtest.SQLQuery1.Fields[i].FieldName;
i:=0;
MySQLtest.Memo1.Lines[0] := TempString;
for i := 1 to length(TempString) do
begin
MySQLtest.Memo1.Lines[1] := MySQLtest.Memo1.Lines[1] + '_'
end;
//Конец процедуры
end;
Procedure PutResultToMemo;
//Глобальная процедура для заполнения Memo1 результатами выборки из SQLQuery1
var
i, j: integer;
FieldName, TempString: String;
begin
MySQLtest.SQLQuery1.Open;
i := 0;
while not MySQLtest.SQLQuery1.EOF do
begin
j := 0;
TempString := '';
while j <= MySQLtest.SQLQuery1.FieldCount-1 do
begin
FieldName := MySQLtest.SQLQuery1.Fields[j].FieldName;
If MySQLtest.SQLQuery1.FieldByName(FieldName).AsString <> '' then
TempString :=
TempString+MySQLtest.SQLQuery1.FieldByName(FieldName).AsString+'....'
else
TempString := TempString+'[nil]....';
inc(j)
end;
MySQLtest.SQLQuery1.Next;
MySQLtest.Memo1.Lines[i+2] := TempString;
inc(i)
end;
//Конец процедуры
end;
procedure ExecuteQuery;
begin
try
//Начало соединения
MySQLtest.SQLQuery1.Active:=false;
MySQLtest.SQLQuery1.SQL.Clear;
MySQLtest.SQLQuery1.sql.add('SET character_set_client='+#39+'utf8'+#39+', character_set_connection='+#39+'cp1251'+#39+',character_set_results='+#39+'utf8'+#39+';');
MySQLtest.SQLQuery1.ExecSQL;
MySQLtest.SQLQuery1.SQL.Clear;
MySQLtest.SQLQuery1.sql.AddStrings(MySQLtest.EditSQLCommand.lines);
//Соединение удачно
//Подготавливаем Memo1
PrepareMemo;
//Записываем результат в Memo1
PutResultToMemo;
except
ShowMessage('Ошибка при выполнении запроса');
exit;
end;
procedure TMySQLtest.ButtonConnectClick(Sender: TObject);
//Эта процедура выполняет подключение к MySQL, основываясь на данных из //3 полей Edit: EditHost, EditName, EditPassword
//Также выполняется первая выборка, основанная на тексте в EditSQLCommand
begin
MySQL50Connection1.HostName := EditHost.Text;
MySQL50Connection1.UserName := EditName.Text;
MySQL50Connection1.Password := EditPassword.Text;
try
MySQL50Connection1.Connected := true
except
ShowMessage('Невозможно подключиться к базе данных');
exit;
end;
try
SQLTransaction1.Active:=true;
except
ShowMessage('Невозможно создать транзакцию');
exit;
end;
ExecuteQuery;
if MySQL50Connection1.Connected = true then
StatusBar1.SimpleText := 'Соединение установлено';
procedure TMySQLtest.ButtonExecuteClick(Sender: TObject);
begin
ExecuteQuery
end.
Приложение Г. Листинг тестовой программы, разработанной в Visual Studio
// TestSQL.cpp: определяет точку входа для консольного приложения.
//
#include <windows.h>
#include <winsock.h>
#include <mysql.h>
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
system("cls");
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
int i = 0;
// Получение дексриптора соединения
conn = mysql_init(NULL);
if (conn == NULL)
{
fprintf(stderr, "Ошибка: невозможно создать дескриптор\n");
}
// Подключение к серверу
if (!mysql_real_connect(conn, "localhost", "root", "admin", "test", NULL, NULL, 0))
{
fprintf(stderr, "Ошибка: невозможно подключиться к базе данных\n", mysql_error(conn));
}
else
{
fprintf(stdout, "Подключение установлено\n");
}
string query;
cout << "Введите SQL-запрос\n";
cin >> query;
const char* query_char = query.c_str();
mysql_set_character_set(conn, "utf8"); //Изменение кодировки запросов
mysql_query(conn, query_char); //Отправление запроса, введенного ранее
if (res = mysql_store_result(conn)) {
while (row = mysql_fetch_row(res)) {
for (i = 0; i <mysql_num_fields(res); i++) {
std::cout << row[i] << "\n"; //Циклический вывод данных, полученных из БД
}
}
} else fprintf(stderr, "%s\n", mysql_error(conn));
// Закрытие соединения
mysql_close(conn);
system("Pause");
}
Размещено на Allbest.ru
Подобные документы
Классификации баз данных и СУБД. Технология модели "клиент-сервер". Особенности языка структурированных запросов SQL. Структура и назначение операторов определения, манипулирования и управления данными. Разработка реляционной БД, создание SQL запросов.
курсовая работа [1,4 M], добавлен 17.08.2015Исследование особенностей создания и сопровождения баз данных и их объектов при помощи пакета Microsoft Access. Изучение языка структурированных запросов. Обзор системы управления базами данных. Основные виды связей между отношениями и их характеристики.
курсовая работа [2,9 M], добавлен 22.01.2016База данных как поименованная совокупность структурированных данных, относящихся к определенной предметной области. Ее типы и структура, особенности архитектуры. Функциональные особенности языка структурированных запросов (SQL). Разработка базы данных.
курсовая работа [639,8 K], добавлен 14.12.2022Общая характеристика и состав информационных запросов к проектируемой базе данных, требования к ней и внутренняя структура, принципы нормализации и разработка логической модели. Создание таблиц и связей между ними. Язык структурированных запросов.
курсовая работа [985,6 K], добавлен 22.05.2014Назначение и основные функции системы управления базами данных СУБД, особенности и признаки их классификации. Архитектура баз данных (БД). Разработка распределенных БД. Язык структурированных запросов (SQL). Правила Кодда: требования к реляционным БД.
курсовая работа [376,2 K], добавлен 21.07.2012Работа с хранящейся в базах данных информацией. Язык описания данных и язык манипулирования данными. Распространение стандартизованных языков. Структурированный язык запросов SQL. Язык запросов по образцу QBE. Применение основных операторов языка.
презентация [76,2 K], добавлен 14.10.2013Язык структурированных запросов SQL (Structured Query Language) и его место в сфере доступа к информации в реляционных базах данных. Структура и основные типы данных языка. Синтаксис и семантика главных операторов SQL, последние стандарты языка.
реферат [98,7 K], добавлен 29.03.2012Рассмотрение вопроса автоматизации работы служб гостиницы. Разработка базы данных для работы с клиентами. Характеристика языка структурированных запросов SQL и его разновидности. Описание таблицы программы, ключей и диаграммы составленной базы данных.
курсовая работа [1,6 M], добавлен 27.05.2014Базы данных как составная часть информационных систем. Изучение взаимосвязи понятий информация и данные. Система управления базами данных. Пример структурированных данных. Обеспечение логической независимости. Безопасность операционной системы.
контрольная работа [44,6 K], добавлен 15.06.2009Построение базы данных для экзаменационных ведомостей. Работа с таблицами, создание простых форм, отчетов и запросов (Query by Example). Использование информации из нескольких, связанных между собой таблиц. Запросы с использованием статистических функций.
практическая работа [39,1 K], добавлен 24.06.2009