Создание подключения TADOConnection
Компонент TADOConnection осуществляет соединение с хранилищем данных. TADOConnection похож на компонент TSQLConnection. Разница между ними в том, что при работе с TSQLConnection параметры соединения устанавливались с помощью свойств ConnectionName, DriverName и Params. В TADOConnection все параметры подключения задаются через свойство ConnectionString. Кроме того в качестве строки подключения в TADOConnection может быть указано имя файла с параметрами подключения.
Для хранения параметров подключения в Windows существует специальный тип файлов Microsoft Data Link — это файл с расширением udl. С этим расширением ассоциирован универсальный редактор подключений. IBProvider поддерживает свои собственные табы, которые предоставляют удобный интерфейс для формирования параметров соединения. Для того чтобы использовать udl файл в своем приложении выполните следующие шаги:
- Создайте пустой файл с расширением .udl
- Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения
- В списке OleDb провайдеров выберете IBProvider v3:
- Установите параметры подключения к БД и нажмите кнопку «Проверить подключение». На рисунке заданы следующие параметры:
- Интегрированная аутентификация Firebird 2.1;
- Источник — тестовая БД localhost:employee.fdb. Подключение определено без пути, т.к. БД прописана в файле aliases.conf;
- Режим автоматического управления транзакциями: Включен;
- Кодировка: WIN1251 или другая кодировка, поддерживаемая Firebird или InterBase;
СОВЕТ
Всегда включайте в параметр Location сетевое имя компьютера на котором установлен сервер Firebird или InterBase. Для локального подключения используйте localhost. Это позволит обеспечить совместимость.
Теперь добавьте на форму компонент TADOConnection. Задайте свойство: Login Promt=false и установите в качестве строки подключения ConnectionString созданный ранеее файл подключения udl:
Подробная информация о свойствах инициализации IBProvider.
Отображение данных через TADOTable
Компонент TADOTable позволяет загружать данные одной таблицы.
- Найстройте объект TADOConnection:
- Connected = true;
- Login Promt = false;
- Добавьте на форму объект TADOTable и настройте его следующим образом:
- Connection = ADOConnection1;
- TableName = имя таблицы из employee.fdb (CUSTOMER, EMPLOYEE, PROJECT и т.п.);
- Active=true;
- Добавьте компонент TDataSource с вкладки Data Access. Настройки:
- DataSet = TADOTable1;
- Добавьте компонент TDBGrid с вкладки Data Controls. Настройки:
- DataSource = DataSource1;
В результате DBGrid отобразит данных той таблицы, которая была выбрана в объекте TADOTable:
Компонент TADODataSet
Компонент TADODataSet — это надстройка над объектом ADODB.Recordset. В отличии от TADOTable, TADODataSet может загружать не только таблицы, но и множества, возвращаемые хранимыми процедурами или SQL-запросами.
Перед началом работы с TADODataSet установите свойство Connection = ADOConnection1. Альтернативный вариант — эта указать строку подключения в свойстве ConnectionString. Но я настоятельно рекомендую для хранения подключения использовать отдельный объект TADOConnection.
В свойстве CommandText укажите текст команды для загрузки данных. Текстом команды могут являться:
- SQL — запрос. (Примеры: «SELECT * FROM EMPLOYEE», «EXEC ALL_LANGS» и т.д.). При этом свойство CommandType=cmdText.
- Имя таблицы. (Примеры: «EMPLOYEE», «CUSTOMER», «PROJECT»). CommandType=cmdTableDirect.
- Имя хранимой процедуры. (пример: «ALL_LANGS», «SHOW_LANGS»). CommandType=cmdStoredProc.
Команда в CommandText должна возвращать набор данных. К примеру, в тексте нельзя использовать INSERT, DELETE или UPDATE, а так же указывать хранимые процедуры, которые не возвращают набор данных (Recordset).
Перейдем к практическому примеру демонстрирующему возможности Delphi при работе c Firebird/InterBase:
- Создадим простейший редактор служащих на основе TADODataSet.
- Перемещаться по записям будем при помощи компонента TDBNavigator.
- Список служащих отобразим в TDBGrid.
- Для редактирования деталей воспользуемся контейнером TDBCtrlGrid в который поместим TDBLabel, TDBText, TDBComboBox.
Законченный пример показан на картинке:
Далее я приведу последовательность действий для воспроизведения примера саммостоятельно:
- Добавьте на форму и настройте компонент TADOConnection.
- Добавьте компонент TADODataSet и настройте его следующим образом:
- CommandText = «select EMP_NO, FIRST_NAME, LAST_NAME, FULL_NAME, JOB_COUNTRY, DEPT_NO from EMPLOYEE»;
- CommandType = cmdText;
- Active = true;
- Добавьте компонент TDataSource с вкладки Data Access:
- Установите свойство DataSet = ADODataSet1;
- Добавьте на форму 2 компонента c вкладки Data Controls: TDBNavigator и TDBCtrlGrid:
- Каждому установите свойство DataSource = DataSource1;
- У TDBCtrlGrid установите RowСount = 1;
TDBCtrlGrid — это компонент-контейнер. Он может отображать как одну так и несколько записей в зависимости от значения свойства RowCount. Внутри него расположены компоненты для редактирования данных.
TDBLabel — нередактируемое поле. При помощи этого компонента будем отображать колонку FULL_NAME.
Для редактирования полей FIRST_NAME, LAST_NAME добавим на форму 2 компонента TDBText, у которых установим свойство DataField.
Поле JOB_COUNTRY связано внешним ключом с таблицей COUNTRY. Для редактивания этого поля используем выпадающий список TDBComboBox содержащий коды стран. После установки поля DataField = JOB_COUNTRY, необходимо заполнить список данными из таблицы COUNTRY.
Кроме описанных в примере, на вкладке Data Controls расположены компоненты для редактирования изображений (TDBImage), многострочного текста (TDBMemo), отображения списков и т.д.