Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

Залипание после запросов.   Найти похожие ветки 

 
MixerPro ©   (2003-12-19 11:54) [0]

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

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


 
Johnmen ©   (2003-12-19 11:57) [1]

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


 
MixerPro ©   (2003-12-24 11:37) [2]

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".
В каком случаю теряется соединение с базой ????

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


 
MixerPro ©   (2003-12-24 11:41) [3]

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


 
Johnmen ©   (2003-12-24 11:42) [4]

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


 
MixerPro ©   (2003-12-24 11:52) [5]

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


 
Johnmen ©   (2003-12-24 11:54) [6]

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


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

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


 
MixerPro ©   (2003-12-24 12:24) [8]

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


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

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

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


 
MixerPro ©   (2003-12-24 12:50) [10]

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



Страницы: 1 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
14-63408
Думкин
2003-12-27 05:58
2004.01.20
С днем рождения! 27 декабря.


1-63114
XED
2004-01-07 22:49
2004.01.20
Алгоритм сегментации полутонового изображения!!!


1-63124
Dust
2004-01-08 05:12
2004.01.20
Поиск в получиных пакетах


1-63191
wnew
2004-01-09 21:49
2004.01.20
Проблема с Transparent


1-63076
BlackLord2003
2004-01-08 00:01
2004.01.20
Не стандартные кодировки.