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

Вниз

Обработка запроса к БД   Найти похожие ветки 

 
Андрей (начинающий)   (2009-03-04 11:55) [0]

При обращении к таблице БД файл с этой таблицей может быть занят, но освобождается довольно быстро. В предоставленном коде запрос нормально срабатывает где-то от 1-й до 20-й итерации цикла. Но гложат меня сильные сомнения, что я правильно обращаюсь к БД. Подскажите, пожалуйста, что я делаю не так и как правильно обратиться к таблице сразу после ее освобождения если она в данный момент времени занята.

   // ...
   close;
   i:=1; sql.Clear;  sql.Add("...");
   while (i>0) and (i<100) do
     try
       inc(i); open; i:=0;
     except
     end; // *** try..except..end

   first;
   while not Eof do begin
     //...
     next;
   end; // *** while not Eof do

   close;
   //...


 
Сергей М. ©   (2009-03-04 12:04) [1]

А кто и при каких условиях захватывает таблицу в монопольное использование ?


 
Андрей (начинающий)   (2009-03-04 12:09) [2]


> Сергей М. ©   (04.03.09 12:04) [1]

Другой запрос на выборку данных из другой процедуры


 
Сергей М. ©   (2009-03-04 12:14) [3]


> Андрей (начинающий)   (04.03.09 12:09) [2]


Запрос на выборку не может быть причиной "занятия" файла таблицы.

    try
..
      open;
..
    except
      on e:Exception do ShowMessage(e.ClassName + " " + e.Message);
    end;


Какое дословно сообщение видишь ?


 
Андрей (начинающий)   (2009-03-04 12:47) [4]


> Сергей М. ©   (04.03.09 12:14) [3]
</I
> Какое дословно сообщение видишь ?

>
Дело в том, что ошибка доступа вылетает не постоянно. Сейчас вставил вывод сообщения, потестил несколько минут. Ничего не вылетело :) Для отлова нужно более длительное время. Меня интересует сам принцип - допустим ли такой код, что я привел? Мне не хочется выводить сообщение об ошибке во время работы (не отладки) программы. В крайнем случае можно вести лог ошибок, но не диалоговое окно. Скорее всего таблицу занимает операция записи другой процедурой.


 
Сергей М. ©   (2009-03-04 13:09) [5]


> таблицу занимает операция записи другой процедурой


СУБД какая ?


 
Сергей М. ©   (2009-03-04 13:10) [6]

С чего вообще ты взял, что проблема в "занятости" файла таблицы ?


 
Андрей (начинающий)   (2009-03-04 13:54) [7]


> Сергей М. ©   (04.03.09 13:10) [6]

А в чем еще может быть ошибка при открытии запроса на выборку данных по таблице? БД на основе "VolgaDB".


 
Сергей М. ©   (2009-03-04 14:01) [8]


> в чем еще может быть ошибка при открытии запроса на выборку
> данных по таблице?


Ты давай лови ошибку)
Если это будет именно "Table is busy", вот тогда поверю что она занята


 
Труп Васи Доброго ©   (2009-03-04 14:19) [9]

Первый раз слышу про эту Волгу, посмотрел краткое описание: VolgaDB Engine 5.10 - это набор компонент для работы с "плоскими" таблицами (single-user engine).  Может в этом "single-user" и кроется тайна?


 
Сергей М. ©   (2009-03-04 14:19) [10]


> БД на основе "VolgaDB"


"VolgaDB" - это что за зверь ?)


 
Андрей (начинающий)   (2009-03-04 15:47) [11]


> Сергей М. ©   (04.03.09 14:19) [10]


:)

VolgaDB Engine is a small and fast data engine for working with flat files in special Volga format (files with *.d extension) and as Volga client for MS SQL, MySQL and MS Access (Jet) databases in Delphi and C++Builder applications without using BDE. For flat files it has no multi-user or client-server support. All necessary code is included in your application (~130-140 Kb) without additional DLLs. No any registry settings! It works with Delphi 4.0, 5.0, 6.0, 7.0 and C++Builder 4.0, 5.0, 6.0. Code examples are emphasized with color.

Главное для меня - не требуют установки BDE и всяких библиотек клиенту. Скопировал сами таблицы и работай с ними. По сути, это обычные таблицы типа Paradox. Можно работать с ними напрямую или через SQL запросы.


 
Сергей М. ©   (2009-03-04 16:45) [12]


> Андрей (начинающий)   (04.03.09 15:47) [11]


Понятно.
Ну тогда у меня те же подозрения, что и в [9]


> Другой запрос на выборку данных из другой процедуры


Тогда что мешает по завершению этой процедуры освободить таблицу, с тем чтобы без проблем обращаться к ней в последующих вызываемых тобой процедурах ?



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
15-1234596212
Palladin
2009-02-14 10:23
2009.04.19
Декларирование указателя в Си


4-1208534442
Незнайка
2008-04-18 20:00
2009.04.19
работа с The Bat!


2-1235949145
WeX
2009-03-02 02:12
2009.04.19
Помогите с TTreeView


15-1234964100
@!!ex
2009-02-18 16:35
2009.04.19
ICQ опять уронили?


15-1235073067
DmitryG.
2009-02-19 22:51
2009.04.19
UnZip TMemoryStream