Шрифт:
100 begin
110 IBDatabase1.Params.Clear;
120 IBDatabase1.Params.Add('USER SYSDBA');
130 IBDatabase1.Params.Add('PASSWORD masterkey');
140 IBDatabase1.Params.Add('PAGE_SIZE 4096');
150 IBDatabase1.DatabaseName:= fn;
160 IBDatabase1.SQLDialect := 3;
170 IBDatabase1.CreateDatabase;
180 IBDatabase1.Connected:=True;
190 IBTransaction1.Active:=True;
200 end;
210 end;
– В 50 строке запрашивается имя для файла новой базы данных, если мы не ответим, то в 60 строке выход из процедуры.
– В 70 строке проверяется, ввели ли мы расширение в имени файла, и если мы ленивы, то 80 строка таковое расширение добавляет.
– А вот это, важно! В строках 120 и 130 вводится имя пользователя и пароль. Во всех руководствах по Firebird говорится, что приведенные пароль и пользователь, указанны для образца, а использовать надлежит свои.
– Посему, меняем строки на:
120 IBDatabase1.Params.Add('USER Cats');
130 IBDatabase1.Params.Add('PASSWORD forever');
* А причем здесь коты?
– Ну, у себя ты введешь свои пароли.
* О, у себя, я как всегда напишу…
– Стоп, стоп, стоп! И ни другу, не врагу, никогда не …
* Ладно, я понял.
– * -
* Шеф, усе пропало!!! т.е. не получилось. Появилось угрожающее окно Debugger Exception Notification, со страшной надписью Project Project1.exe raised exception class EIBInterBaseError with message 'unavailable database'. Process stopped. Use Step or Run to continue..
– Спокойствие, только спокойствие... бывало и у меня такое.
– Для комфортной работы Firebird хочет иметь доступ к своим dll а именно:
gds32.dll
icudt30.dll
icuuc30.dll
и желательно:
firebird.msg
Конечно, лучше всего поместить эту компанию, в папочку WINDOWS\system или WINDOWS\system32, в этом случае, в дальнейшем ни о чем не надо беспокоится, НО если тебе надо показать твою гениальную программу заказчику, (а на его месте я бы не разрешил лазить тебе в системные папки) лучше держать эту свору в демонстрационной папке.
– * -
* У меня проблемы стал копировать dll, а система и говорит файл gds32.dll мол у меня есть только постарее да поменьше, можно ли заменить, ну я слов то не померил, и системе той поверил. А эта Редиска и говорит что она занята, т.е. файл занят.
– Ну, занят файл, значит, занят, мы то ящик покупаем не для собственного удовольствия, а для удовлетворения запросов системы, ну и ладно…
– Ибо сказано: Если у тебя есть фонтан – заткни его, и компьютеру надо отдохнуть…
– Все выключай, и иди погуляй.
«Продолжение следует»
ББД продолжение
– Извини, выключать комп было совершенно не нужно. Достаточно было закрыть Delphi, именно он занимал файл.
* Ладно, проехали. У меня тут как раз возник вопрос. Все сработало, файл базы создался, но на фейсе программы ничего не изменилось.
– Да, вот тут, ты прав. Недоработка. Но, я тоже обдумал… надо ввести изменения.
165 try
170 IBDatabase1.CreateDatabase;
180 IBDatabase1.Connected:=True;
190 IBTransaction1.Active:=True;
192 except
194 ShowMessage('Не нахожу dll');
195 exit;
196 end; // try
187 FMain.Caption := fn;
198 ShowTables;
200 end;
– Во-первых давай позаботимся о том, чтобы исключительное положение, которое у нас возникло, было бы хоть как ни будь обработано ( строки 165, 192-196).
– Строка 198 выдаст название новой базы в заголовке программы и сообщит что таблиц, в этой базе пока нет.
procedure ShowTables;
begin
with FMain.ListBox1 do
begin
Clear;
Items.Add('Empty');]
end;
end;
– Сразу скажу, что процедуру ShowTables мы очень скоро будем существенно менять, посему не буду нумеровать строки…
– * -
* Все сработало, но…
– Да, хвалится пока еще нечем. Надо делать следующий шаг.
Задача: открыть существующую базу данных.