Язык структурированных запросов 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.