powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / потоки и база access (ms jet)
13 сообщений из 13, страница 1 из 1
потоки и база access (ms jet)
    #40035994
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет народ!
Есть у меня прога которая работает с базой mdb через ADO.
Работает приблизительно так:
При запуске проки открывается ADOConnection.
есть некая функция-обертка, в которую передается текст запроса и запрос выполняется через ADOConnection.Execute.

Понадобился мне дополнительный поток. Я его создал и в нем, периодически вызывается вышеупомянутая функция-обертка.
Но вот беда, стала подозрительно часто крашеться база. mdb и так славится глючностью, но тут совсем часто.

Может надо было для потока заводить отдельный коннект?
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40035995
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет надо было для потока заводить отдельный коннект?

Именно так!
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044909
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это получается, что нужно писать одинаковые функции, но с разным коннекшеном для каждого потока?
Или передавать коннекшн каждый раз?
Или можно как то в функции брать коннекшн текущего потока?
Последнее наверно лучше всего.
Но как? Для функций хелперов.
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044916
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

https://www.thoughtco.com/multithreaded-delphi-database-queries-1058158
You *cannot* use the TADOConnection object from the main thread (application). Every thread needs to create its own database connection .
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044917
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.

didgik
Или можно как то в функции брать коннекшн текущего потока?


Передавайте в функции ADOConnection параметром.
Для повышения прозрачности это тоже не плохо.

Ну или пусть эти функции будут методами Thread, тогда можно разместить ADOConnection в private-поле класса
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044919
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgikИли можно как то в функции брать коннекшн текущего потока?
Последнее наверно лучше всего.
Но как?

Нет, это хуже всего. Но если очень хочется, то threadvar.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044944
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
didgik,

https://www.thoughtco.com/multithreaded-delphi-database-queries-1058158
You *cannot* use the TADOConnection object from the main thread (application). Every thread needs to create its own database connection .


Кстати, в статье три постулата:

1 Solve: "CoInitialize was not called".
2 Solve: "Canvas does not allow drawing".
3 Main TADoConnection cannot be used!

Со вторым все понятно. С третьего как раз я начал спрашивать в начале, у меня работает, но подозрительные глюки. А вот с первым непонятно. Написано, что должно вылетать исключение если этого не сделать. У меня не вылетает. Это делфёвый нюанс и на билдере это не актуально или я что-то еще не так делаю?
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044992
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

Выкинуть Jet - не предлагать?
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40044994
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik,

А по 3 пункту - не надо использовать 1 конекшн всегда и везде - тебе же ясно сказали.....
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40045095
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
didgik,

Выкинуть Jet - не предлагать?


Нет. В планах перейти на что нибудь типа SQLite, но потом.

DarkMaster
didgik,

А по 3 пункту - не надо использовать 1 конекшн всегда и везде - тебе же ясно сказали.....


Я это ясно понял еще со второго сообщения.
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40072456
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет народ!
У меня тут новый вопрос возник.
Решил я открывать базу монопольно, но возникла проблема. Монопольно открывается на одни коннекш, а значит второй коннекш, для потока, я уже открыть не могу.
Есть выход из данной ситуации?
И вообще, есть смысл открывать базу монопольно?
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40072457
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
didgik
Решил я открывать базу монопольно

didgik
И вообще, есть смысл открывать базу монопольно?

Зачем тогда решил открывать монопольно?
...
Рейтинг: 0 / 0
потоки и база access (ms jet)
    #40072508
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
didgik
Решил я открывать базу монопольно

didgik
И вообще, есть смысл открывать базу монопольно?

Зачем тогда решил открывать монопольно?

Да один клиент жалуется, что у него база часто падает. Причем у него несколько точек с разными компами и на всех такая фигня. Вот я и подумал, мож кто нить еще в базу залезает у него.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / потоки и база access (ms jet)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]