Помогите, какой-то глюк(( или я чего-то не понимаю...

Модераторы: kdv, CyberMax

Ответить
oleg0506
Сообщения: 5
Зарегистрирован: 19 мар 2011, 01:05

Помогите, какой-то глюк(( или я чего-то не понимаю...

Сообщение oleg0506 » 19 мар 2011, 01:32

Firebird 2.1
доступ из delphi через компоненты FIBPlus

создаю БД с помощью CreateBD - все успешно!
но, как только я Сразу пытаюсь подключиться (к только что созданной БД) получаю ошибку:
"DPB Constant (user 'sysdba' password 'master key') is unknown."

если же программу перезагрузить, то подключение к этой же БД уже происодит - успешно...

Что же это такое?(( чтобы начать работать с только что созданной БД нужно перезагружать программу?..(((

неужели компоненты FIBPlus должны быть полностью уничтожены и созданы заново, чтобы подключение произошло
успешно?..или дело не в них?..

===== вот простейший код: (надеюсь поможет...) ===========================================================

{Создаю БД. Все ок! Создается!}
with pFIBDatabase1 do begin
DBParams.Clear;
DBParams.Add('USER ''SYSDBA'' PASSWORD ''masterkey''');
DBParams.Add('PAGE_SIZE = 2048');
DBParams.Add('DEFAULT CHARACTER SET WIN1251');
DBName := 'localhost:c:\Test1.FDB'; // <<<<<<<<<<<<<<<<<<<<<<<<<<
SQLDialect := 3;
end;
try
pFIBDatabase1.CreateDataBase;
ShowMessage('БД - СОЗДАНА!');
except
ShowMessage('ОШИБКА при создании БД...');// Error handling
end;

{после этого сразу же пытаюсь к ней подключиться}
if Login(pFIBDatabase1, 'localhost:c:\Test1.FDB', 'SYSDBA', 'masterkey', '') then begin
ShowMessage('Соединение с БД - УСПЕШНО УСТАНОВЛЕНО!');
end else begin
ShowMessage('Соединениес БД - НЕУСТАНОВЛЕНО!');
end;

реализация функции Login:
function Login(DataBase: TpFIBDatabase; dbpath, uname, upass, urole: string): Boolean;
begin
if DataBase.Connected then DataBase.Connected := False;
with DataBase.ConnectParams do begin
UserName := uname;
Password := upass;
RoleName := urole;
end;
DataBase.DBName := dbpath;
try
DataBase.Connected := True;
except
on e: Exception do
ShowMessage(e.Message);
end;
Result := DataBase.Connected;
end;

Вылетает ошибка((((((((((((((((( "DPB Constant (user 'sysdba' password 'master key') is unknown."

Если же программу перезапустить - и снова выполнить функцию Login -- то подключение к БД уже происходит без проблем...(((( что же мне, после создания БД необходимо перезапускать все приложение?..((( (кстати, у удалить только что созданную БД (напр. передумали, ошиблись и т.п.) - также не получится...т.к. для этого нужно к ней подсоединиться... а при при подсоединении сразу после создания - ошибка...((()

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Помогите, какой-то глюк(( или я чего-то не понимаю...

Сообщение Dimitry Sibiryakov » 19 мар 2011, 14:41

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

oleg0506
Сообщения: 5
Зарегистрирован: 19 мар 2011, 01:05

Re: Помогите, какой-то глюк(( или я чего-то не понимаю...

Сообщение oleg0506 » 19 мар 2011, 17:14

Все правильно! Работает!)
СПАСИБО за помощь! (и за столь оперативный ответ!) Тема закрыта!

Ответить