Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
Андрей (начинающий)   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.054 c
2-1236229299
Abcdef123
2009-03-05 08:01
2009.04.19
На что заменить TStringGrid?


6-1202129355
kDenis
2008-02-04 15:49
2009.04.19
winhttp.dll


3-1219316977
Евгений Р.
2008-08-21 15:09
2009.04.19
свойства tIbTransaction


15-1224504901
Правильный$Вася
2008-10-20 16:15
2009.04.19
глобальный кризис и программисты


15-1234722445
Гость
2009-02-15 21:27
2009.04.19
Вирус?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский