Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизЗалипание после запросов. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c