Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Залипание после запросов. [D5, IB5.x]


MixerPro ©   (2003-12-19 11:54:00) 

Есть 2 базы InterBase. Одна моя, другая - чужая.
На основе своей базы написан уже большой проект и все работает. Но вот появилась задача сконвертированть нужные данные из чужой БД в мою.
1. Открываю обе ДБ
2. Выполняю большой объем запросов по чужой БД типа "Select ... Where ..."
3. Записываю в файл (просто так надо)
4. Выхожу из программы.
При выходе программа залипает. Если конвертирование было в небольшом объеме, то через пол минуты программа отмокает.
Так вот может она за собой транзакции чистит... Не пойму, где траблы?

Если объяснил не достаточно понятно, то могу конкретизированть.
Спасибо.


MixerPro   (2003-12-24 12:50:00) [1]

Проблема в том, что все вроде работает, но программа не закрывается долго - от пол минуты при небольшом числе запросов и дольше.
Т.е. как будто она память за собой чистит.
Вообще кто нибудь пробовал работать одновременно с двумя interBase базами?


Кщд   (2003-12-24 12:49:00) [2]

MixerPro © (24.12.03 12:24) [8]
"Но вот появилась задача сконвертированть нужные данные из чужой БД"

если под "сконвертировать" подразумевался просто перенос
если нет, то нет


MixerPro   (2003-12-24 12:24:00) [3]

Зачем использовать BatchOutput/BatchInput ?


Кщд   (2003-12-24 11:59:00) [4]

А если структура соурс и дестинишн одинакова, то BatchOutput/BatchInput


Johnmen   (2003-12-24 11:54:00) [5]

1. Да.
2. Close делать всегда, когда запрос уже не нужен. А после этого Commit.


MixerPro   (2003-12-24 11:52:00) [6]

1. Т.е. вместо transSicon.Rollback пишем transSicon.Commit ?
2. Таких запросов в цикле много. CurrIbQ.Close делать после заждого запроса ?


Johnmen   (2003-12-24 11:42:00) [7]

Желательно всё же коммитить читающую транзакцию. А завершать её обязательно. Перед завершением работы...


MixerPro   (2003-12-24 11:41:00) [8]

Вместо
dmSicon.qD.Close;
CurrIbQ.Close;


MixerPro   (2003-12-24 11:37:00) [9]

1. Компоненты доступа:
dbSicon:TIBDatabase
transSicon:TIBTransaction
dsD:TDataSource
qD:TIBQuery
то же самое по другой БД
2. Свойства транзакции:
DefaultAction = TARollBack (база только читается, данные пишутся в файл)

Фактически открыты две БД. По обеим БД идет только чтение, а данные пишутся в файл.
По обеим БД компоненты отдельные, т.е. для каждой БД свои IBDatabase,IBTransaction, DataSource, IBQuery.
Запрос к БД:
CurrIbQ.SQL.Clear;
CurrIbQ.SQL.Add("Select D.* from Data D where .......");
try CurrIbQ.Open;
// далее по всем выбранным записям читаю данные
// ........
// ........
dmSicon.qD.Close;
if dmSicon.transSicon.Active then dmSicon.transSicon.Rollback; // это уже лишнее наверное

После такого запроса при параллельной работе с той же БД другой программой (давно отлаженной) при закрытии программы выходит сообщение "Connection lost to database".
В каком случаю теряется соединение с базой ????

Помогите пж-та! Есть идеи?


Johnmen   (2003-12-19 11:57:00) [10]

1. Компоненты доступа ?
2. Управление транзакциями ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо