![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать новую БД в InterBase из Delphi? [D7, IB6.x]
-=Oscar=- © (2003-04-15 13:06:00)Ситуация: надо создать новую БД под InterBase из тела программы. Потом в ней создать ряд таблиц. Как это сделать?
Sheriff (2003-04-16 09:21:00) [1]что-то в этом роде подойдет?
IBDataBase1.SQLDialect:=1;
IBDataBase1.DatabaseName:=ExtractFilePath(ParamStr(0))+"test.gdb";
IBDataBase1.Params.Append("user "+#39+"sysdba"+#39);
IBDataBase1.Params.Append("password "+#39+"masterkey"+#39);
IBDataBase1.Params.Append("page_size 4096");
IBDataBase1.Params.Append("default character set win1251");
IBDataBase1.CreateDatabase;
IBTransaction1.Active:=true;
IBDataBase1.Open;
IBSQL1.SQL.Append("CREATE TABLE TBL_DATA ("+
"ID INTEGER NOT NULL,"+
"FIELD1 VARCHAR(15) CHARACTER SET WIN1251 COLLATE PXW_CYRL,"+
"FIELD2 VARCHAR(300) CHARACTER SET WIN1251 COLLATE PXW_CYRL,"+
"FIELD3 VARCHAR(115) CHARACTER SET WIN1251 COLLATE PXW_CYRL,"+
"FIELD4 INTEGER DEFAULT 0,"+
"FIELD5 NUMERIC DEFAULT 0,"+
"FIELD6 DATE,"+
"FIELD7 INTEGER,"+
"PRIMARY KEY (ID));");
IBSQL1.ExecQuery;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Append("CREATE GENERATOR NUM_ID_GEN;");
IBSQL1.ExecQuery;
IBSQL1.SQL.Clear;
IBSQL1.SQL.Append("CREATE PROCEDURE AUTO_NUM_TBL_DATA RETURNS (NR INTEGER)");
IBSQL1.SQL.Append("AS BEGIN NR = GEN_ID(NUM_ID_GEN,1); END;");
IBSQL1.ExecQuery;
IBTransaction1.Commit;
IBTable1.TableName:="TBL_DATA";
IBTable1.Active:=true;
IBStoredProc1.StoredProcName:="AUTO_NUM_TBL_DATA";
StatusBar1.SimpleText:="База данных TEST.GDB создана";
Sergey13 (2003-04-16 08:53:00) [2]2-=Oscar=- (15.04.03 13:06)
>Ситуация: надо создать новую БД под InterBase из тела программы. Потом в ней создать ряд таблиц. Как это сделать?
А зачем, если не секрет, это делать из программы? Создание базы - это разовая работа. Ты же не каждый день ее создаешь. Или ты пишешь нечто вроде IB Manager и создание баз - часть функционала проги? Если нет, то для распространения программы самое лучшее, ИМХО, создать копию базы без данных и просто переписывать ее клиенту - меньше всего мороки. Или см. Zacho © (15.04.03 16:16) - тоже хорошо.
kravchuk (2003-04-15 18:27:00) [3]если влом использовать IBX можно содрать реализацию из файла IBDatabase - TIBDatabase.CreateDatabase, там на уровне АПИ сервера :0)
dtm (2003-04-15 17:45:00) [4]Я так сам не пробовал, но делал знакомый, и вроде получилось у него.
В DLL как ресурс прятал пустой файл *.GDB и потом его доставал и сохранял на диск с возможным переименованием.
Zacho (2003-04-15 16:16:00) [5]Другой способ: создать скриптом с помошью isql.exe или аналогичных утилит.
kravchuk (2003-04-15 13:21:00) [6]если юзать IBX
TIBDatabase.CreateDatabase