Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мультипоточный доступ к БД?

489
23 января 2010 года
NeO_u
277 / / 11.10.2006
Добрый день. Возникла необходимо мультипоточного и одновременного доступа к БД.

БД: SQLite.
Язык: C#.

Мне необходимо осуществить многопоточный доступ к БД, т.е. на одну и ту же операцию, например, получения, вставки и удаления записей, может одновременно обращаться несколько потоков, как это сделать? Подскажите?
Сейчас используется типизированный датасет и все обращения к БД идут напрямую через единственный экземпляр дата адаптера.

Заранее спасибо :)
253
23 января 2010 года
Proger_XP
1.5K / / 07.08.2004
 
Код:
LOCK TABLES table WRITE

?
489
23 января 2010 года
NeO_u
277 / / 11.10.2006
Цитата: Proger_XP
 
Код:
LOCK TABLES table WRITE

?



Что-то не нашел под SQLite никакой инфы.

253
23 января 2010 года
Proger_XP
1.5K / / 07.08.2004
Применительно к SQLite не знаю, но это обычная команда для SQL, например, см. доки MySQL. Что-то подобное должно быть и для SQLite.
5
23 января 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Proger_XP
это обычная команда для SQL, например, см. доки MySQL.


Какие-то у вас извращенные представления об SQL. Нормальные СУБД сами управляют блокировкой, например, посредством транзакций.

Цитата:
Мне необходимо осуществить многопоточный доступ к БД, т.е. на одну и ту же операцию, например, получения, вставки и удаления записей, может одновременно обращаться несколько потоков, как это сделать?

Создавать еще одно подключение к базе. Хотя я, право, не знаю позволит ли SQLite этот фокус, если же нет, вам придется самостоятельно организовывать прослойку для синхронизации потоков при работе с БД. Кроме того, советую вам избавиться от датасетов - они вам только мешают.

489
23 января 2010 года
NeO_u
277 / / 11.10.2006
Цитата: hardcase
Какие-то у вас извращенные представления об SQL. Нормальные СУБД сами управляют блокировкой, например, посредством транзакций.

Создавать еще одно подключение к базе. Хотя я, право, не знаю позволит ли SQLite этот фокус, если же нет, вам придется самостоятельно организовывать прослойку для синхронизации потоков при работе с БД. Кроме того, советую вам избавиться от датасетов - они вам только мешают.



А почему избавиться от датасетов?

Какие-нибудь советы по прослойке дадите? Потому как я плохо себе представляю как это организовать :-(

14
25 января 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата:

SQLITE_THREADSAFE=<0 or 1 or 2>

This option controls whether or not code is included in SQLite to enable it to operate safely in a multithreaded environment. The default is SQLITE_THREADSAFE=1 which is safe for use in a multithreaded environment.


и т. д.

5
25 января 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: NeO_u
А почему избавиться от датасетов?


Датасеты подразумевают "отключенный" сценарий для работы с данными. Такой сценарий не особо то и нужен в случае со встроенной СУБД.

Цитата: NeO_u
Какие-нибудь советы по прослойке дадите? Потому как я плохо себе представляю как это организовать :-(

Поищите в сети информацию о модели предметной области.
С ходу могу дать ссылку только на туториал по ASP.NET MVC: хотя в нем иллюстрируется подход с использованием LINQ2SQL/EF ОРМ-ов, по коду можно вполне оценить подход к построению приложения без датасетов.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог