Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие СУБД 2011.pdf
Скачиваний:
68
Добавлен:
10.06.2015
Размер:
2.75 Mб
Скачать

69

Главная форма проекта frmMain, модуль данных frmDM подлежат созданию, только если функция возвратит (свидетельствующее о наличии файла с данными) значение true. В противном случае работа приложения прекращается.

Для завершения проекта нам остаётся сделать два последних штриха: создать строку соединения ADO и научить проект сохранять в реестре путь к файлу с данными. Эти задачи мы решим в модуле данных frmDM.

Работу с frmDM начинаем с объявления глобальной переменной FilePath. Именно она использовалась для хранения пути к файлу с данными. Затем воспользуемся двумя обработчиками событий модуля данных. Событие OnCreate() возникает в момент создания модуля данных, здесь мы заполним основные параметры соединительной строки ADO. Событие OnDestroy() вызывается при завершении работы модуля данных, оно нам пригодится для сохранения в реестре пути к базе данных.

var

frmDM: TfrmDM;

FilePath:string; //путь к базе данных implementation

{$R *.dfm}

procedure TfrmDM.DataModuleCreate(Sender: TObject); begin

{формируем соединительную строку} ADOConnec-

tion1.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+FilePath+';Persist Security Info=False'; ADOConnection1.Connected:=True;

end;

procedure TfrmDM.DataModuleDestroy(Sender: TObject); var RI:TRegIniFile;

begin

{сохраняем путь к файлу БД в реестре} RI:=TRegIniFile.Create('Software'); RI.WriteString('bookshop','path',FilePath); RI.Free;

end;

Проект завершён. Предложенное решение может оказаться полезным при работе не только с настольными СУБД, но и при разработке клиент-серверных проектов БД.

Информирование о БД

В состав методов компонента TADOConnection входит процедура способная предоставить нам системную информацию о базе данных

procedure OpenSchema(const Schema: TSchemaInfo; const Restrictions: OleVariant;

const SchemaID: OleVariant; DataSet: TADODataSet);

Первый параметр метода Schema: TSchemaInfo определяет какую именно информацию мы рассчитываем получить. Например, передав в параметр константу siIndexes – мы приобретём информацию об индексах БД, siTables – таблицах, siViews – представлениях. Второй параметр Restrictions представляет собой массив ограничений на запрашиваемую информацию. Третий по счёту параметр SchemaID применяется только в ситуации, когда глобальный уникальный идентификатор GUID провайдера данных не определён в стандартной спецификации OLE DB. Как правило, такая необходимость возникает в случаях, когда аргумент Schema установлен в siProviderSpecific. И, наконец, последний параметр DataSet является ссылкой на

Ставропольский государственный университет, кафедра КБ

70

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

TDBGrid.

Апробируем приобретенные знания на практике. Разместите на форме (см. рис. 11.4) нового проекта компоненты:

соединение ADO – ADOConnection1;

набор данных ADO – ADODataSet1;

источник данных – DataSource1;

сетку – DBGrid1.

Перейдите к инспектору объектов. С помощью свойства Connection элемента управления ADODataSet1 свяжите компонент с ADOConnection1. Затем выберите источник данных DataSource1 и, воспользовавшись свойством DataSet, соедините его с ADODataSet1. В заключении подключите сетку DBGrid1 к источнику данных DataSource1. На этом манипуляции с инспектором объектов завершились.

Рисунок 11.4. Сбор данных о системной БД Microsoft SQL Server

Переходим к программированию. На своё усмотрение создайте строку соединения с интересующей вас базой данных. В этом примере мы соединяемся с системной базой данных Master из состава СУБД Microsoft SQL Server, размещённой на сервере MSSQLSERVER_HOST. Для этого опишем событие создание формы так, как предложено в следующем листинге:

procedure TForm1.FormCreate(Sender: TObject); begin

ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Master; Data Source=MSSQLSERVER_HOST';

ADOConnection1.Open;

ADOConnection1.OpenSchema(siTables, EmptyParam, EmptyParam, ADODataSet1);

end;

Если всё сделано безошибочно, то в результате запуска проекта мы получим данные обо всех таблицах системной БД Master.

На основе процедуры OpenSchema() построен ряд справочных методов, способных снабдить нас данными о таблицах, полях таблиц и хранимых процедурах базы данных.

Ставропольский государственный университет, кафедра КБ

71

procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);

procedure GetFieldNames(const TableName: String; List: TStrings); procedure GetProcedureNames(List: TStrings);

Результаты выполнения процедур передаётся в список строк List.

Задание

1.В среде проектирования Delphi (C Builder) на основе компонента TADOConnection создайте приложение, соединяющееся с разработанной вами БД MS Access.

2.Предусмотрите в своём проекте возможность регистрации пользователя в БД.

3.Предусмотрите в своём проекте возможность сбора служебной информации о БД (имена доступных таблиц и их полей).

Ставропольский государственный университет, кафедра КБ

72

XII. Общие черты компонентов доступа к данным среды

Delphi

Вид занятия – практическое занятие. Время занятия – 2 часа.

Более десятка визуальных элементов управления среды программирования Delphi предназначены для решения вопросов отображения содержимого отдельных полей, или коллекции строк из набора данных, многие из них обучены редактировать данные, а кое-кто даже способен управлять процессом ввода/удаления данных из таблиц. Благодаря этим компонентам, мы, не написав ни одной строки кода, сможем строить несложные приложения, работающие с базой данных. Для проверки этого утверждения дополните разработанный на лабораторной работе 11 проект новой формой и разместите на главной форме следующий перечень элементов управления:

1.Таблица ADOTable1, этот компонент вы обнаружите на страничке dbGo палитры компонентов.

2.Источник данных DataSource1 (страничка Data Access).

3.Навигатор данных DBNavigator1 (страничка Data Controls).

4.Сетка для отображения данных DBGrid1 (страничка Data Controls).

Рисунок 12.1. Внешний вид первого проекта БД

Разместив все перечисленные компоненты на форме проекта (см. рис. 12.1), выберите таблицу – компонент ADOTable1. Нам предстоит проделать наиболее важную операцию – подключить компонент таблицу к физической таблице, которая в разработанном вами файле БД. Для этого выберите свойство Connection компонента и подключите его к компоненту-соединителю ADOConnection1.

Закончив настройку строки соединения мы получаем возможность подключить компонент ADOTable1 к файлу с таблицей. Для этого в инспекторе объектов находим свойство TableName и вводим имя любой таблицы из вашей БД, например TableName:=SUPPLIERS. Настройка подключения завершена, нам осталось только активи-

© Осипов Д.Л., 2011