![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
interbase [D7, IB6.x]
alex_mas © (2003-11-21 21:26:00)
Здравствуйте!
Как создать базу interbase из программы. Из ibsql получается
след-м образом:
CREATE DATABASE "с:\test.gdb"
USER "sysdba" PASSWORD "masterkey"
PAGE_SIZE = 4096
DEFAULT CHARACTER SET win1251;
а как это же пропустить в программе?
Компонент IBSQL требует подключения к существующей базе данных.
Спасиба.
Zacho (2003-11-22 21:04:00) [1]
> alex_mas (22.11.03 02:45) [10]
В общем, похоже каша у тебя в голове. Итак, создать БД можно следующими способами:
1. Просто скопировать "эталонный" файл БД
2. Выполнить скрипт с помощью стандартной утилиты isql.exe или IBEScript.exe из IBExpert (надеюсь, про то как пользоваться CreateProcess рассказывать не надо)
3. Компоненты для выполнения скриптов есть в FIBPlus и (вроде бы, сам не смотрел) в последней версии IBX.
4. Создать БД с помощью TIBDatabase.CreateDatabase следующим образом:
a) в IBDatabase.DatabaseName указываешь имя файла БД.
б) в IBDatabase.Params пишешь
USER "SYSDBA"
PASSWORD "masterkey"
и остальные нужные тебе параметры, например
PAGE_SIZE 8192
DEFAULT CHARACTER SET WIN1251
в) устанавливаешь нужный диалект в IBDatavase.SQLDialect
г) Вызываешь IBDatabase.CreateDatabase
е) База создана, можешь создавать метаданные запросами DDL с помощью, например, TIBSQL
alex_mas (2003-11-22 02:45:00) [2]
Напр. TSQLScript из библиотеки RxLib (через БДЕ работает).
попробую
Вообще говоря, это делается один раз, как и создание БД. С помощью спец.средств и менеджеров для IB.
это я делал не один раз при помощи утилиты ibsql
теперь задача именно в программе создать базу и структуру.
компонент ibsql по частям выполняет скрипт.
т.е. 2 раза create table не проходит.
попробую Tsqlscript
Johnmen (2003-11-22 02:29:00) [3]
1.Напр. TSQLScript из библиотеки RxLib (через БДЕ работает).
2.Написать программу
3.Вообще говоря, это делается один раз, как и создание БД. С помощью спец.средств и менеджеров для IB.
alex_mas (2003-11-22 02:19:00) [4]
А каким компонентом это можно сделать?
Johnmen (2003-11-22 02:03:00) [5]
Ну да. Ты же хочешь пройти курс обучения. А здесь конференция. Но никак не курсы...:)
ibquery для этой цели не годится.
alex_mas (2003-11-22 01:53:00) [6]
ага было тут уже такое :)
продать книги и нанять негра чтобы на F1 жал
на этой неделе кому-то здесь уже советовали.
А всё таки чем ibquery годится для этой цели или нет?
Или чем нибудь другим проще?
Johnmen (2003-11-22 01:49:00) [7]
>F1 не всегда помогает
Совершенно верно ! Начинать надо с книг.
alex_mas (2003-11-22 01:47:00) [8]
Разобрался
LoginPromt:=false
и все юзается
что за роль 3 ?
Диалект 3-й при создании не даёт указать sql-error так же как и default characteur set.
А как можно создать сразу таблицы в базе процедуры триггеры и т.д.? С помощью чего лучше делать?
Т.е. допустим в файле 1.sql находится скрипт. С помощью какого компонента лучше прогнать его?
Заранее спасибо.
F1 не всегда помогает. :(
Johnmen (2003-11-22 01:13:00) [9]
1. TIBDatabase.Params + F1
2. А что за роль 3 ? Вроде бы после создания ты никаких ролей не определял...:)))
alex_mas (2003-11-21 23:53:00) [10]
Получилось создать базу но никак не могу подключиться к ней потом Вылетает ошибка
Operation Cancelled at user"s request
Где я ошибаюсь?
Ibdatabase1.Params.Clear;
IBdatabase1.DatabaseName:=basename;
IBdatabase1.Params.Add("user "SYSDBA"");
IBdatabase1.Params.add("password "masterkey"");
IBdatabase1.Params.Add("PAGE_SIZE 4096");
Ibdatabase1.CreateDatabase;
Ibdatabase1.Connected:=false;
Ibdatabase1.Params.Clear;
IBdatabase1.Params.Add("user "SYSDBA"");
IBdatabase1.Params.add("password "masterkey"");
IBdatabase1.Params.Add("lc_ctype=WIN1251");
IBdatabase1.Params.Add("sql_role_name=3");
IBdatabase1.Connected:=true;
Zacho (2003-11-21 22:08:00) [11]
См. TIBDatabase.CreateDatabase