Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
new.doc
Скачиваний:
22
Добавлен:
11.04.2015
Размер:
8.27 Mб
Скачать

11 Управление соединением с базой данных при помощи компоненты tDataBase и объекта Tsession

11.1 Класс TdataBase

Объект типа TDataBase не является обязательным при работе с базами данных, однако, он предоставляет ряд дополнительных возможностей по управлению соединением с базой данных. TDataBase служит для:

  • Создания постоянного соединения с базой данных

  • Определения собственного диалога при соединении с базой данных (опрос пароля)

  • Создания локального псевдонима базы данных

  • Изменения параметров при соединении

  • Управления транзакциями

TDataBase является невидимым во время выполнения объектом. Он находится на странице “Data Access” Палитры Компонент. Для включения в проект TDataBase нужно “положить” его на главное окно вашей программы.

11.2 Создание постоянного соединения с базой данных

Если вы работаете с базой данных, то перед началом работы выполняется процедура соединения с этой базой. В процедуру соединения, кроме прочего, входит опрос имени и пароля пользователя (кроме случая работы с локальными таблицами Paradox и dBase через IDAPI). Если в программе не используется TDataBase, то процедура соединения выполняется при открытии первой таблицы из базы данных. Соединение с базой данных обрывается, когда в программе закрывается последняя таблица из этой базы, это происходит в том случае, если свойство KeepConnectionsобъектаSessionустановлено в False, но об этом чуть позже. Теперь, если снова открыть таблицу, то процедура установки соединения повторится, и это может быть достаточно неудобно для пользователя. Чтобы соединение не обрывалось даже в том случае, когда нет открытых таблиц данной базы, можно использовать компонент типа TDataBase. В свойстве AliasName укажите псевдоним базы данных, с которой работает программа; в свойстве DatabaseName - любое имя (псевдоним БД), на которое будут ссылаться таблицы вместо старого псевдонима базы. Свойство Connected установите в True - процедура соединения с базой будет выполняться при запуске программы. И, наконец, свойство KeepConnection нужно установить в True (см. рис.1).

Рис.1: Свойства TDataBase в Инспекторе объектов

В нашем примере, после задания свойств DataBase1 нужно у всех таблиц, работающих с IBLOCAL в свойстве DatabaseName поставить Loc_IBLOCAL.

11.3 Определение собственного диалога при соединении с базой данных

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

Рис.2: Диалог авторизации пользователя

При желании можно изменить внешний вид диалога или вообще его отменить. Для этого используются свойства и события класса TDataBase - LoginPrompt, ParamsиOnLogin.

Чтобы отключить опрос имени и пароля установите свойство LoginPrompt в False. При этом в свойстве Params требуется в явном виде (во время дизайна либо во время выполнения) указать имя и пароль пользователя. Например, в программе можно написать (до момента соединения с базой, например в событии для Form1 OnCreate):

DataBase1.LoginPrompt:=False;

DataBase1.Params.Clear;

DataBase1.Params.Add(‘USER NAME=SYSDBA’);

DataBase1.Params.Add(‘PASSWORD=masterkey’);

DataBase1.Connected:=True;

Чтобы использовать свой собственный диалог, в котором можно опрашивать не только имя и пароль пользователя, но и, например, сетевой протокол - создайте обработчик события OnLogin для DataBase1:

procedure TForm1.Database1Login(Database: TDatabase;

LoginParams: TStrings);

begin

Form2.ShowModal;

if Form2.ModalResult = mrOK then

with LoginParams do begin

Values['USER NAME'] := User_Name;

Values['PASSWORD'] := User_Pass;

end;

end;

Здесь Form2- новое окно-диалог для ввода имени и пароля,User_NameиUser_Pass- строки, куда сохраняются введенные имя и пароль.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]