Главная страница
    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.48 MB
Время: 0.035 c
9-1087491097
Zak3D[@Tm]
2004-06-17 20:51
2004.11.07
Анимированный персонаж.


14-1098186072
Herzog
2004-10-19 15:41
2004.11.07
Как разбить на строки...


14-1098201489
kaZaNoVa
2004-10-19 19:58
2004.11.07
Замедление .. как реализовать ?


14-1098190305
nastya
2004-10-19 16:51
2004.11.07
innosetup


3-1097057614
VitGun
2004-10-06 14:13
2004.11.07
Ошибка при добавлении записи.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский