Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизПомогите с CreateDatabase ! Найти похожие ветки
← →
Pashafess (2002-03-22 08:41) [0]
Здравствуйте всем. Не могу создать базу данных Interbase программно. У компоненты TIBDatabase есть метод CreateDatabase. Посмотрел по Хелпу и написал:
ibdb2.databasename := "c:\pasha.gdb";
ibdb2.Params.strings[1]:="user_name=SYSDBA";
ibdb2.Params.add("");
ibdb2.params.strings[2]:="password=masterkey";
ibdb2.SQLDialect:=1;
ibdb2.LoginPrompt :=False;
ibdb2.CreateDatabase;
Выдает ошибку, что Имя пользователя и пароль неправильны. Обратитесь к администратору базы данных, что бы залогинится к Interbase.
← →
sniknik (2002-03-22 08:54) [1]Не могу сказать точно по IB но в Pervasive есть такая фича(была может счас изменили). Нельзя создать новую базу если не подключен к какой нибудь существующей. Может это общее для баз. Попробуй.
← →
Zemal (2002-03-22 10:58) [2]Вообще для создания базы данных лучше пользоваться языком базы данных... в твоём случае это одна из разновидностей SQL... посмотри в хелпах по IB команду CREATE DATABASE, там должно быть всё прекрасно изложено... по крайней мере я в MSSQL только этим и пользуюсь. Да и такой подход понадёжнее и правильнее будет. Вообще всё делай на SQL, активнее (там где можно и нельзя :) ) реализуй всё на стороне сервера, меньше потом проблем будет! Програмная логика должна быть правильной! А при изменении логики тебе надо править, в большинстве случаев, не программу, а хранимые процедурки :). Вот тебе пример создания базы данных для MSSQL:
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SPri1dat.mdf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
( NAME = SPri2_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SPri2dt.ndf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SG1Fi1dt.ndf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SG1Fi2dt.ndf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SG2Fi1dt.ndf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
FILENAME = "c:\program files\microsoft sql server\mssql\data\SG2Fi2dt.ndf",
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = "Sales_log",
FILENAME = "c:\program files\microsoft sql server\mssql\data\salelog.ldf",
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Я думаю, что это достаточно понятный пример...
Берёшь IBQuery, пихаешь ему в свойство SQL подобную строку и
делаешь IBQuery.ExecSQL (смотри не пользуйся IBQuery.Open, т.к.
это команда, а не запрос!!! и он не возвращает набора данных!!!)
← →
MAxiMum (2002-03-22 11:05) [3]Сначало надо зарегестрировать Login и Password прежде, чем его использовать.
← →
AlexanderB (2002-03-22 13:04) [4]У меня кусок кода выглядит примерно так:
with IBDatabase do begin
Params.Clear;
Params.Add("USER "" + txtDBUser.Text + """);
Params.Add("PASSWORD "" + txtDBPSW.Text + """);
Params.Add("PAGE_SIZE " + STRPAGESIZE1024);
SQLDialect := 3;
DatabaseName := txtDBPath.Text + "\" + txtDBName.Text;
CreateDatabase;
end;
А вот язык по-умолчанию выставить не могу.
← →
s.ts (2002-03-25 20:35) [5]см.
Params.Add("lc_ctype=WIN1251")
← →
Malder (2002-03-25 22:05) [6]Zemal, Query не поддерживает SQL комманду CREATE DATABASE
← →
Pashafess (2002-03-26 02:10) [7]Ни один из советов к сожалению не помог. Пример AlexanderB это тоже самое что написал я. Правда я не пользовался txtDBUser.Text и т.п. т.к не понял откуда брать эти компоненты. Так вот если явно прописать имя и пароль, то он выдает ошибку: Your user name and password are not defined.
Так же вопрос к Maximum"у Что значит зарегистрировать Login и Password? В IB сервере по умолчанию есть User SYSDBA и пароль masterkey.
Zemal к сожалению IBQuery.ExecSQL не работает т.к требует подключения к базе, а если подключишь его к уже существующей базе, то выскакивает ощибка DSQL: Cannot prepare a CREATE DATABASE/SCHEMA statement. У меня получилось создать базу данных из IBExpert"а (это утилита сторонних производителей к ИБСерверу) только когда я не подсоединен ни к какой базе. Как организовать эту процедуру в делфи я не знаю.
Неужели никто не создавал базу данных для IB 5юч из Delphi я уже две недели мучаюсь. Помогите. Заранее благодарен.
← →
kaif (2002-03-26 09:38) [8]Все гораздо проще. IBDatabase анализирует параметры, записанные в виде параметр=значение при Connect, но не при CreateDatabase. В последнем случае, т, что ты пропишешь в Params будет передано на сервер одной строкой. (Это видно из текста его обращения к API InterBase)
Впиши туда, например:
Params.Text := "USER ""SYSDBA"" PASSWORD ""masterkey";
и все сработает. Желательно туда еще добавить DEFAULT CHARACTER SET WIN1251 и PAGESIZE какой- нужно.
У меня так все работает.
← →
Pike (2002-03-29 21:47) [9]Кайф!!!
Kaif, огромное спасибо! Я с этим CreateDatabase задолбился.
Как прочел, сразу (только что) попробовал. Все работает!
Благодарю.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c