![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() здравствуйте. мне нужно написать программу, которая будет автоматически выполнять набор команд-запросов (скриптов). возможно ли это сделать без вспомогательных утилит (osql и т.п.)? если да, то какими средствами делфи это лучше сделать? выводить ничего никуда не нужно, главное - изменить данные в самой БД.
|
#2
|
|||
|
|||
![]() на чем база?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#3
|
|||
|
|||
![]() firebird (interbase)
|
#4
|
|||
|
|||
![]() Ну а что мешает использовать ibdatabase, ibquery в таком случае?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#5
|
|||
|
|||
![]() недостаток знаний. поэтому и спрашиваю)
|
#6
|
|||
|
|||
![]() эмм... сообственно используем 3 компонента
Ibdatabase для соединения с базой. Ibtransaction - для управления транзакциями. и Ibquery для выполнения запросов. в параметрах IBDatabase прописываем параметры для доступа такие как путь к серверу, логин, пароль и т.д. привязываем к нему IbTransaction указав его в одноименном свойстве. в Ibquery В свойстве DataBase выбираем IBDataBase. Далее примерно так, например на кнопку вешаем событие и в событии пишем например: Код:
if ibTransaction1.intransaction then ibtransaction.commit; ibtransaction.StartTransaction; ibquery1.active:=false; ibquery1.Sql.clear; ibquery1.Sql.add('Update TableName Set FieldName=1 where id=1'); ibquery1.ExecSql; ibtransaction.commit; ibtransaction.StartTransaction; ibquery1.active:=false; ibquery1.Sql.clear; ibquery1.Sql.add('INSERT INTO TableName (FieldName) Values ('+#39+'sss'+#39+')'); ibquery1.ExecSql; ibtransaction.commit; Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#7
|
|||
|
|||
![]() Цитата:
Спасибо. Но, наверное, это не то, что я ищу. Хорошо, если в скрипте 4 строчки, а если их 100 или больше... Замучаешься прописывать : ) Наверное, без утилит не обойтись.. |
#8
|
|||
|
|||
![]() я показал только механизм, как пример.
а дальше начинается полет фантазии ![]() Например т.к. свойство Query.Sql есть TStrings у него есть метод LoadFromFile ![]() т.е. можно все скрипты хранить в txt или использовать ini или еще как нить. ![]() Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#9
|
|||
|
|||
![]() Ммм)) а вот это уже интересно) спасибо)
|
#10
|
|||
|
|||
![]() выдает ошибку. видимо, не может подключиться к базе.
Код:
IBDatabase1.Connected:=False; IBDatabase1.DatabaseName:='C:\DB.GDB'; IBDatabase1.Connected:=True; что-то не так делаю. пишут, что пользователя и пароль прописывать не надо, т.к. они по умолчанию... |
#11
|
|||
|
|||
![]() Database 192.168.1.126:C:\ZVONKI.GDB (например так)
В params IbDataBase пишем : Код:
user_name=sysdba password=masterkey lc_ctype=WIN1251 loginPromt в false Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#12
|
|||
|
|||
![]() работает. но как-то странно) выполняет скрипт только в том случае, если в нем одна строка... иначе - ошибка
|
#13
|
|||
|
|||
![]() Скрипт покажите. и то как заполняете.
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#14
|
|||
|
|||
![]() скрипт простейший:
Код:
UpDate SETUP Set FieldValue='' Where FieldName='EMAIL_FROM'; UpDate SETUP Set FieldValue='' Where FieldName='EMAIL_TO'; UpDate SETUP Set FieldValue='' Where FieldName='SMTP_HOST'; UpDate SETUP Set FieldValue='' Where FieldName='SMTP_PASSWORD'; UpDate SETUP Set FieldValue='' Where FieldName='SMTP_USER'; UpDate SETUP Set FieldValue='C:\temp\' Where FieldName='FN_PATH'; COMMIT; код: Код:
procedure TForm1.FormCreate(Sender: TObject); begin IBDatabase1.Connected:=False; IBDatabase1.DatabaseName:='C:\DB.GDB'; IBDatabase1.Params.Clear; IBDatabase1.Params.Add('user_name=SYSDBA'); IBDatabase1.Params.Add('password=masterkey'); IBDatabase1.Params.Add('lc_ctype=WIN1251'); IBDatabase1.Connected:=True; IBDatabase1.DefaultTransaction:=IBTransaction1; IBTransaction1.DefaultDatabase:=IBDatabase1; IBQuery1.Database:=IBDatabase1; if IbTransaction1.InTransaction then IbTransaction1.Commit; IbTransaction1.StartTransaction; IbQuery1.Active:=false; IbQuery1.Sql.Clear; IbQuery1.SQL.LoadFromFile('C:\Menu.sql'); IbQuery1.ExecSql; IbTransaction1.Commit; end; |
#15
|
|||
|
|||
![]() ура! получилось))
для того, чтобы прогнать скрипт, нужно было поставить дополнительно компонент IBScript (http://www.ibase.ru/devinfo/ibx.htm)))) спасибо за помощь) |