Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Проблемма с запуском скрипта создания базы из моего приложения.   Найти похожие ветки 

 
Hmm   (2004-10-07 15:27) [0]

Здраствуйте.
Вот суть проблеммы, с которой я столкнулся:
Существует скрипт создания базы данных, таблиц и заполнения их, начинается он так:
Create database "c:\sysDT.gdb" USER "SYSDBA" PASSWORD "masterkey";
...

Возникает вопрос, как запустить такой скрипт из моего приложения, ведь стандартная цепочка, типа ibDatabase=>StoredProc не подоходит, т.к. еще не существует базы "c:\sysDT.gdb" и соответственно не возможно заполнить свойство databasename.
Конечно, можно выполнить ibDatabase.createdatabase и потом запустить остальную часть скрипта, НО хотелось бы знать есть ли возможность выполнять скрипт целиком?


 
Zacho ©   (2004-10-07 16:46) [1]

Сущетвует стандартная утилита isql.exe и, например, IBEScript.exe из IBExpert.


 
-SeM-   (2004-10-07 17:10) [2]

Zacho ©   (07.10.04 16:46) [1]

> как запустить такой скрипт из моего приложения


Hmm   (07.10.04 15:27)
Если используешь FIBPlus, поищи FIBPlus Script (by Nikolay Trifonov).
Или же с помощью ibDatabase и ibQuery.


 
Zacho ©   (2004-10-07 17:11) [3]

Кстати, StoredProc не подходит ещё хотя бы и потому, что в SP операторы DDL не доступны, разрешено  только DML.


 
Zacho ©   (2004-10-07 17:12) [4]

-SeM-   (07.10.04 17:10) [2]
А что, трудно из приложения запустить сторонний exe с нужными параметрами ?
И плевать на всякие там компоненты :))


 
-SeM-   (2004-10-07 17:41) [5]

Zacho ©   (07.10.04 17:12) [4]

> А что, трудно из приложения запустить сторонний exe

Которого может и не быть на клиентской машине


 
Zacho ©   (2004-10-07 17:54) [6]

Дык, надо позаботиться, чтобы был :)
Тем более, что isql.exe действительно стандартная утилита, обычно инсталлятор клиента устанавливает и её тоже.


 
jack128 ©   (2004-10-07 18:08) [7]

-SeM-   (07.10.04 17:10) [2]
Если используешь FIBPlus, поищи FIBPlus Script (by Nikolay Trifonov).


для IBX есть аналогичный стандартный компонент


 
Hmm   (2004-10-07 20:32) [8]

возможно меня не совсем поняли =(

во-первых, именно из написанного мною приложения(!!!). Хорошо, пусть это будет сторонний экзешник, но писать то его опять таки мне, значит опять таже проблемма.

во-вторых, тут предложили ibQuery+ibDatabase, но ведь я уже говорил: база создается скриптом. До запуска скрипта базы не существует, следовательно ни в процессе проэктирования, ни во время выполнения нельзя задать свойство DatabaseName.

Таким образом, вопрос сводится к тому, существует ли компонет выполняющий скрип не на готовой базе а "с нуля"? или возможно есть какае-то хитрость в использовании стандартных компонентов?


 
Johnmen ©   (2004-10-07 20:48) [9]

>Hmm  

А ты вообще читаешь, что тебе пишут ? Такое впечатление, что нет...


 
Zacho ©   (2004-10-07 21:44) [10]

Hmm   (07.10.04 20:32) [8]
Блин... Тебе предложили уже 3 разных способа:
1. Запускать из своей программы утилиту, позволяющую выполнять скрипты. Есть (есть !! не надо их писать !!) стандартная - isql.exe (входит в дистрибутив IB), есть IBEScript.exe (идёт в комплекте с IBExpert) , возможно ещё какие-нибудь есть, выбирай по вкусу. Если не знаешь, как пользоваться CreateProccess - читай местный FAQ.
2. Использовать специализированный компонент для выполнения скрипта. И в FIBPlus и в IBX такой есть. Судя по всему у тебя IBX, если такого компонента нет - поставь последний апдейт.
3. Сделать "вручную" - т.е. создать БД с помощью TIBDatabase, а потом каждый запрос из скрипта выполнять с помощью TIBSQL. Или у тебя проблемы с парсингом скрипта ?

В общем, выбирай способ по вкусу. И читай ответы внимательнее.


 
Hmm   (2004-10-07 22:38) [11]

2 Johnmen
глупо считать, что я отвечаю не читая... возможно не все понимаю сразу и до конца. в любом случае, это не повод оскорблять.

2 Zacho
извини не сразу понял о чем речь. предположил, что ты предлагаешь мне запускать срипт из сторонней программы, предварительно войдя в неё.
1.createproccess не передает ни каких параметров дочернему процессу, тогда уж shellexecute, но тут вопрос, каким должен быть параметр - путь к скрипту?
2.апдейт на делфу? какой компонент нужен? или какой апдейт? где можно скачать
3.вручную будем делать ежели начальная задумка не выйдет (

в любом случае, спасибо за внимаение.

ЗЫ: если вопросы покажутся глупыми - извиняйте, тока учусь.


 
kaif ©   (2004-10-07 22:53) [12]

А сам скрипт-то ты чем исполняешь?
Сам "исполнитель скрипта" разбирает его на отдельные команды и в конечном счете как правило вызывает функции API gds32.dll. Посмотри, как создает базу данных IBDatabase в исходниках этого компонента и сам разберешься.


 
jack128 ©   (2004-10-07 23:03) [13]

Hmm   (07.10.04 22:38) [11]
1.createproccess не передает ни каких параметров дочернему процессу, тогда уж shellexecute, но тут вопрос, каким должен быть параметр - путь к скрипту?  Хелп не читаем принципиально??

> 2.апдейт на делфу? какой компонент нужен? или какой
> апдейт? где можно скачать

на компоненты ibx. на ibase.ru были ссылки и вобще yandex знает все.


 
Zacho ©   (2004-10-08 01:47) [14]


> 1.createproccess не передает ни каких параметров
> дочернему процессу, тогда уж shellexecute, но тут
> вопрос, каким должен быть параметр - путь к скрипту?

Передаёт. Но если хочешь, можешь использовать и ShellExecute(Ex). В параметрах ты должен указать соответствующий ключ и путь к файлу со скриптом. Описание isql есть в Operations Guide, так же краткий хелп можешь получить просто запустив isql и введя команду help;

P.S. Куча документации, полезных статей, ссылок и т.п. есть на http://www.ibase.ru



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 1.947 c
14-1098432889
ZEX
2004-10-22 12:14
2004.11.07
Stream - новое поколение


3-1097472932
CrazyBoy
2004-10-11 09:35
2004.11.07
Cache - это быстро ???


9-1089528478
ПсихЪ_копия
2004-07-11 10:47
2004.11.07
Движение объектов в OpenGL или как замерять время


14-1098271287
Бар
2004-10-20 15:21
2004.11.07
Какой функцией прочесть время создания файла?


1-1098532319
span
2004-10-23 15:51
2004.11.07
Как организовать диалог с внешним устройством