- •Работа с сервером MySql при помощи терминального клиента mysql.Exe
- •Введение
- •Подсоединение к серверу и отсоединение от него
- •Создание пользователейMySqLи назначение прав доступа
- •Использованиеmysqlв пакетном режиме
- •Выполнение запросов
- •Создание и выбор базы данных
- •Работа с таблицами Типы данных столбцов
- •Создание таблицы
- •Просмотр структуры таблицы
- •Модификация структуры таблицы
- •Переименование таблицы
- •Добавление данных в таблицу
- •Просмотр существующих таблиц
- •Обновление (модификация) данных в таблице
- •Удаление строк в таблице
- •Удаление таблицы
- •Определение ключей в бд Определение первичных ключей
- •Определение внешних ключей
- •Задание на лабораторную работу
- •Содержание отчета
- •Работа с сервером MySql при помощи клиента dbForge Studio for MySql
- •Введение
- •Создание соединения и подключение к серверу бд
- •Создание и редактирование таблиц
- •Определение внешних ключей
- •Просмотр и редактирование данных
- •Построение диаграммы бд
- •Экспорт схемы и данных
- •Экспорт схемы и данных вDbForge Studio for MySql версии 4.5
- •Задание на лабораторную работу
- •Содержание отчета
- •Разработка хранимых процедур и функций на сервереMySql
- •Введение
- •Создание, запуск и удаление простой процедуры
- •Создание, запуск и удаление простой функции
- •Простые и системные переменные
- •Параметры процедур и функций
- •Операторы управления ходом выполнения программы
- •Курсоры
- •Задание на лабораторную работу
- •Содержание отчета
- •Исключения и триггеры
- •Исключения
- •ОператорSignal
- •Триггеры
- •Задание на лабораторную работу
- •Содержание отчета
- •Технологии программного доступа к данным
- •КомпонентыActiveX Data Objects
- •Создание главной формы приложения для работы с бд. Соединение с базой данных
- •Создание простой формы с использованием компонентаDataGrid(форма «Детали»)
- •Использование компонентовDbEdit, иDbLookupComboBox. Программный доступ к свойствам и методам компонентаAdoDataSet(форма «Поставщики»)
- •Реализация поиска и фильтрации в базе. Программный доступ к элементам набора данных (форма «Проекты)
- •Сортировка строк в компонентеDbGrid
- •Создание форм с выбором режима просмотра или редактирования. Работа с датой и временем (форма «Поставки»)
- •Работа с изображениями в бд
- •Имитация выпадающего списка в ячейке dbGrid
- •Вызов хранимой процедуры
- •Создание отчетов
- •Задание на лабораторную работу
- •Издания и публикации
- •Разработкаweb-приложений дляMySqLна языкеPhp
- •Установка и настройкаDenver
- •Соединение с бд и вывод данных
- •Задание на лабораторную работу
Работа с изображениями в бд
Изображения хранятся в базе данных в поле типа LONGBLOB. КомпонентDBImageпозволяет отображать изображения в форматеbmp.
Добавьте в таблицу детали столбец типа LONGBLOB. Поместите на форму «Детали» компонентыDBImage,OpenPictureDialog,Buttonкак показано на рисунке:

Задайте свойству DataSourceкомпонентаDBImageзначениеDataSource1. СвойствуDataFieldзначениеImage.
Создайте обработчик нажатия кнопки «Загрузить»:
ADODataSet1->Edit();
if (OpenPictureDialog1->Execute())
DBImage1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
При загрузке изображения следует учесть, что в компонент DBImage способен работать только с изображениями в формате Windows Bitmap, а также «не умеет» масштабировать изображения.
Имитация выпадающего списка в ячейке dbGrid
Для имитации выпадающего списка в ячейке DBGridнеобходимо создать компонентDBLookupComboBox, который будет автоматически размещаться поверх ячейкиDBGrid. В качестве примера создадим выпадающий список для выбора города в форме «Проекты».
Откройте форму «Проекты» и дополнительно поместите на нее компоненты ADODataSet,DataSource,DBLookupComboBoxкак показано на рисунке.

Свяжите ADODataSet с ADOConnection, DataSource с ADODataSet. Задайте свойству CommandText компонента ADODataSet значение select * from towns, свойству ListField компонента DBLookupComboBox значение Town, свойству KeyField компонента DBLookupComboBox значение Town_ID, свойству Visible компонента ADODataSet значение False.
Создайте обработчик события OnDrawColumnCellкомпонентаDBGridсо следующим кодом:
{
// если текущая ячейка находится в фокусе и принадлежит столбцу с номером города
if (State.Contains(gdFocused)&& Column->Field == ADODataSet1->Fields->Fields[2])
{
DBLookupComboBox1->Left=DBGrid1->Left+Rect.Left;
DBLookupComboBox1->Top=DBGrid1->Top+Rect.Top;
DBLookupComboBox1->Width=Rect.Right-Rect.Left+2;
DBLookupComboBox1->Visible=True;
}
}
Для того, чтобы при переходе на другой столбец DBLookupComboBox скрывался, создайте следующий обработчик:
void __fastcall TForm4::DBGrid1ColExit(TObject *Sender)
{
// при потере фокуса компонент DBLookupComboBox скрывается
if (DBGrid1->SelectedField == ADODataSet1->Fields->Fields[2]) DBLookupComboBox1->Visible=False;
}
Проверьте работу выпадающего списка:

Вызов хранимой процедуры
Реализуйте условие, согласно которому в форме «Проекты» наименование проекта будет отображаться красным цветом, если для данного проекта не осуществляется поставок. Для этого создайте хранимую процедуру Project_Supply_Number, которая будет получать в качестве параметра номер проекта и подсчитывать для него количество поставок:
CREATE PROCEDURE db1.Project_Supply_Number(IN Prj_ID INT, OUT n INT)
BEGIN
SELECT count(*)INTO n FROM supply where Project_ID=Prj_ID;
END
Поместите на форму дополнительные компоненты ADOQuery и DataSource. Свяжите компонент ADOQuery сADOConnection,DataSourceс ADOQuery.

Дополните обработчик OnDrawColumnCellкомпонентаDBGridсо следующим кодом:
//если текущая ячейка принадлежит столбцу с названием проекта
if( Column->Field == ADODataSet1->Fields->Fields[1])
{
DBGrid1->Canvas->Font->Style = TFontStyles() << fsBold;
DBGrid1->Canvas->Brush->Color = clSkyBlue;
DBGrid1->Canvas->FillRect(Rect);
//получение количества поставок для текущего проекта
ADOQuery1->SQL->Text="CALL Project_Supply_Number("+ADODataSet1->Fields->Fields[0]->AsString+",@N);";
ADOQuery1->ExecSQL();
ADOQuery1->SQL->Text="SELECT @N;";
ADOQuery1->Active=True;
ADOQuery1->ExecSQL();
//если для текущего проекта не осуществляется поставок
if(DataSource3->DataSet->Fields->Fields[0]->AsInteger==0)
{
DBGrid1->Canvas->Font->Color = clRed;
}
ADOQuery1->Close();
if (Column->Alignment==taRightJustify)
DBGrid1->Canvas->TextOut(Rect.Right-2-DBGrid1->Canvas->TextWidth(Column->Field->Text),Rect.Top+2,Column->Field->Text);
else
DBGrid1->Canvas->TextOut(Rect.Left+2,Rect.Top+2,Column->Field->Text);
}
Проверьте работу формы:

