Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.11.2010, 14:24
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
Вопрос автоматическое выполнение запросов

здравствуйте. мне нужно написать программу, которая будет автоматически выполнять набор команд-запросов (скриптов). возможно ли это сделать без вспомогательных утилит (osql и т.п.)? если да, то какими средствами делфи это лучше сделать? выводить ничего никуда не нужно, главное - изменить данные в самой БД.
Ответить с цитированием
  #2  
Старый 29.11.2010, 15:22
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

на чем база?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #3  
Старый 29.11.2010, 15:26
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

firebird (interbase)
Ответить с цитированием
  #4  
Старый 29.11.2010, 15:27
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Ну а что мешает использовать ibdatabase, ibquery в таком случае?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 29.11.2010, 15:52
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

недостаток знаний. поэтому и спрашиваю)
Ответить с цитированием
  #6  
Старый 29.11.2010, 16:07
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

эмм... сообственно используем 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  
Старый 30.11.2010, 08:57
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Raider
Далее примерно так, например на кнопку вешаем событие и в событии пишем например:
Код:
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;

Спасибо. Но, наверное, это не то, что я ищу. Хорошо, если в скрипте 4 строчки, а если их 100 или больше... Замучаешься прописывать : ) Наверное, без утилит не обойтись..
Ответить с цитированием
  #8  
Старый 30.11.2010, 09:43
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

я показал только механизм, как пример.
а дальше начинается полет фантазии

Например т.к. свойство Query.Sql есть TStrings у него есть метод LoadFromFile

т.е. можно все скрипты хранить в txt или использовать ini или еще как нить.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #9  
Старый 30.11.2010, 09:57
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

Ммм)) а вот это уже интересно) спасибо)
Ответить с цитированием
  #10  
Старый 30.11.2010, 12:47
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

выдает ошибку. видимо, не может подключиться к базе.

Код:
 IBDatabase1.Connected:=False;
 IBDatabase1.DatabaseName:='C:\DB.GDB';
 IBDatabase1.Connected:=True;

что-то не так делаю. пишут, что пользователя и пароль прописывать не надо, т.к. они по умолчанию...
Изображения
Тип файла: jpg 1.JPG (14.1 Кбайт, 3 просмотров)
Ответить с цитированием
  #11  
Старый 30.11.2010, 12:57
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Database 192.168.1.126:C:\ZVONKI.GDB (например так)

В params IbDataBase пишем :
Код:
user_name=sysdba
password=masterkey
lc_ctype=WIN1251

loginPromt в false
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #12  
Старый 30.11.2010, 13:12
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

работает. но как-то странно) выполняет скрипт только в том случае, если в нем одна строка... иначе - ошибка
Изображения
Тип файла: jpg 2.JPG (14.9 Кбайт, 4 просмотров)
Ответить с цитированием
  #13  
Старый 30.11.2010, 13:17
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Скрипт покажите. и то как заполняете.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #14  
Старый 30.11.2010, 13:24
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
По умолчанию

скрипт простейший:

Код:
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  
Старый 30.11.2010, 15:16
i_kt i_kt вне форума
Прохожий
 
Регистрация: 21.08.2010
Сообщения: 17
Репутация: 10
Радость

ура! получилось))
для того, чтобы прогнать скрипт, нужно было поставить дополнительно компонент IBScript (http://www.ibase.ru/devinfo/ibx.htm))))
спасибо за помощь)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025