Календарь на Май 2024 года: calendar2008.ru/2024/may/
Навигация
Главная »  Delphi 

Delphi и Mysql. C чего начать? (исходники)


Источник: IT World
Я полагаю, что у вас уже установлен Delphi и все работает замечательно. Чтобы база MySQL была доступна из Delphi, я рекомендую скачать и установить объекты, которые упростят работу с этой базой. На самом деле, в пакете Delphi 7 уже есть некоторые компоненты, в закладке Internet, но те, которые я использую - намного удобнее. Библиотека доступна по этому адресу: http://prdownloads.sourceforge.net/directsql/DirectMysqlObjects.zip?download
или демо версия: http://prdownloads.sourceforge.net/directsql/DemoObjectsWin.zip?download Чтобы установить эти компоненты, вам нужно будет разархивировать ZIP файл в директорию {$Delphi}/lib/.
Чтобы использовать эти компоненты, добавьте интерфейсные коды:

uMySqlVio, uMysqlCT, uMysqlClient, uMysqlHelpers

Вот и все, что нужно для установки.

Содинение с базой

Надеюсь, у вас не возникло проблем с установкой и все работает отлично. Дальше я покажу вам, как подсоединяться к базе, как выполнять SQL запросы и как получать данные. Для начала запустите Delphi и создайте новое приложение. Подключите интерфейсы uMySqlVio, uMysqlCT, uMysqlClient, uMysqlHelpers и сохраните проект.
Нам нужно использовать объект доступа к MySQL, поэтому в общей области на главной форме добавим следующее: Код:
MySQLClient: TMySQLClient;


Еще нам понадобится один объект для выполнения SQL запросов: Код:
MySQLResult: TMysqlResult;


Пишем код для подключения к базе и выполнения запроса. Двойной клик на главной форме и в процедуре OnCreate пишем: Код:
MySQLClient := TMySQLClient.Create;


В процедуру OnDestroy добавляем такой код: Код:
MySQLClient.Free; if MySQLResult <> nil then MySQLResult.Free; 


Поместите новую кнопку в любое место формы, подпишите её 'Connect' и назовите её ButtonConnect.
Чтобы соединиться с базой, нам нужно определить такие параметры как: хост, порт, пользователь, пароль, UNIX сокет и имя базы данных.
Есть два способа: считать параметры из элементов ввода на форме или указать их по ходу выполнения программы.
В этом уроке я покажу вам оба варианта. Длинный и плохой способ:
Код:
MySQLClient.Host := Edit1.Text; MySQLClient.port := StrToInt(Edit2.text); MySQLClient.user := Edit3.text; MySQLClient.password := Edit4.text; MySQLClient.UnixSocket := Edit5.Text; MySQLClient.Db := Edit6.Text; MySQLClient.UseNamedPipe := CheckBox1.Checked; MySQLClient.UseSSL := CheckBox4.Checked; MySQLClient.Compress := CheckBox8.Checked; MySQLClient.TrySockets := CheckBox3.Checked; if MySQLClient.Connect then ShowMessage('connected ok!');



Мой любимый способ: Код:
if FMysql.Connect(Edit1.Text, Edit3.Text, Edit4.Text, 'db', StrToInt(Edit2.text), '', false, 0) then ShowMessage('connected ok!');


Аргументы этой функции располагаются в таком порядке: host, username, password, db, port, socket, try, sockets, client, flag Сам запрос ничем не отличается от такого же, написанного на PhP.
Результат выполнения запроса присваивается переменной MySQLResult, а для выполнения используется объект MySQLClient. Функция выполнения запроса принимает три аргумента: сам SQL запрос, флаг - сохранять ли результат и переменную, куда будет записан флаг выполнения (true, false). Код:
MySQLResult := MySQLClient.Query('SELECT * FROM admin_users WHERE username=''dummy_username'' and password=''dummy_pass''', True, OK);


Таким образом, строка кода, которую вы видите выше, присваивает результат выполнения запроса переменной MySQLResult. В запросе извлекается запись из таблицы admin_users. В логической переменной OK сохранен флаг выполнения, то есть, значение true свидетельствует об успешном выполнении, а false означает ошибку. Теперь можно получить значение поля: Код:
MySQLResult.FieldValueByName('username');


Как можно было догадаться, это скрипт проверки имени пользователя и пароля. Осталось только сделать проверку. Я решил сделать это таким образом, что все проверяется в одном операторе IF, и конкретная причина не выдается: Код:
if (MySQLResult.FieldValueByName('username') <> 'dummy_username') or (MySQLResult.FieldValueByName('password') <> 'dummy_pass') then


Здесь мы проверили жестко закодированное имя пользователя dummy_username с тем, которое возвратил запрос. Пароль проверяется таким же образом. Это не лучший пример программирования, к тому же рекомендуется шифровать данные с помощью функции MD5. Кстати, для работы с ней, вам поможет ресурс www.torry.net. Это был всего лишь пример использования Delphi!



 

 Новая версия FastScript 1.98.
 DBTreeView своими руками.
 Акция компании Embarcadero: Купите один продукт - второй получите бесплатно!.
 Захват содержимого HTTP в Delphi.
 TCP протокол семейства TCP/IP. программирование протокола TCP.


Главная »  Delphi 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.