Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-69841
VEG
2002-04-10 21:18
2002.04.22
Загрузить программу из оперативки


3-69750
Юляша
2002-04-02 07:56
2002.04.22
Определение пути к базе данных


14-69972
Alexandr
2002-03-13 15:00
2002.04.22
Чудо


3-69658
3asys
2002-04-02 12:35
2002.04.22
DBTreeView


1-69926
DMA
2002-04-09 20:06
2002.04.22
Как определить какое окно сейчас активное?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский