Текущий архив: 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.038 c