11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 478
|
||||||
1 | ||||||
Как в SQLite включить многопоточный режим?02.11.2016, 11:57. Показов 4630. Ответов 6
Метки нет (Все метки)
на официальном сайте пишут что существуют три режима работы бд http://www.sqlite.org/threadsafe.html
на просторах хабра нашлась статья, в которой рассказывается как менять эти режимы, но применима она для С++ а как же разрешить работать базе с C# в много поточном режиме? вот мой код коннекта
ошибкаMono.Data.Sqlite.SqliteException: The database file is locked database is locked пробовал перед запросами отключаться и заново подключаться, проблема не пропала
0
|
02.11.2016, 11:57 | |
Ответы с готовыми решениями:
6
Как включить поддержку ICU в System.Data.SQLite ? Файл cookies.sqlite не sqlite на самом деле, или как его открыть Как включить графический режим Как включить режим полёта? |
02.11.2016, 15:28 | 2 |
kelod, из недавних опытов и чтения доков я сделал вывод, что по умолчанию каждый Insert в БД типа SQLite заворачивается в транзакцию. Это, в частности, приводит к очень долгой вставке более-менее большого набора данных. В их обертке для C# я не нашел, как это отключить. По всей видимости, именно это у вас и происходит - идет обращение из разных потоков к файлу БД, а поскольку какой-то запрос (тот что пришел ранее) находится в транзакции, вы получаете такую вот ошибку.
Для своей проблемы я нашел выход (использовать транзакции вручную). Вам тоже может помочь такой выход, единственный момент, его придется приспособить под многопоточное применение.
0
|
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 478
|
|
02.11.2016, 15:48 [ТС] | 3 |
теория становится более менее понятной, а как это применить на практике?
0
|
02.11.2016, 16:03 | 4 |
Если примерно прикинуть, то надо, наверное, определить одну переменную (статическую) для объекта соединения и одну для транзакции (тоже статическую). В статическом конструкторе их инициализировать, и во всех методах объект команды подключать к транзакции. Примерно так, дальше надо экспериментировать.
0
|
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 478
|
|
02.11.2016, 16:33 [ТС] | 5 |
а как пользоваться этими переменными? как сказать базе о транзакции?
если можно хоть небольшой кусочек кода или страничку, где про это можно почитать, только на русском желательно
0
|
02.11.2016, 20:04 | 6 | |||||
Попробуйте примерно по такому шаблону определить класс для работы с БД и поработать через него из нескольких потоков.
1
|
11 / 11 / 0
Регистрация: 17.01.2013
Сообщений: 478
|
|
03.11.2016, 16:41 [ТС] | 7 |
спасибо, кажется починилось, единственное я конструктор не статическим сделал, пока был статиком невозможно было второй раз подключится
0
|
03.11.2016, 16:41 | |
03.11.2016, 16:41 | |
Помогаю со студенческими работами здесь
7
Как включить режим Turbo Boost HP 15-ba102ur как включить режим Turbo Как включить спящий режим в IAR-e? Как включить полноэкранный режим во флэше? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |