crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Запрос вставки
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
AD Дата 22.4.2011, 23:08
 
Цитата(MoPDoBoPoT @ 22.4.2011, 22:09) *
В смысле не вычитает все записи по запросу? Типо этого?

Да.
MoPDoBoPoT Дата 22.4.2011, 21:09
 
Цитата(AD @ 22.4.2011, 14:59) *
она блокирует БД, пока не выполняться все ее select-запросы

В смысле не вычитает все записи по запросу? Типо этого?
 while (myModel->canFetchMore())
     myModel->fetchMore();
AD Дата 22.4.2011, 13:59
  Проблема решена. Дело вот в чем. Моя модель SqlFileModel наследовалась от QSqlTableModel, а у QSqlTableModel есть особенность при работе с SQLite она блокирует БД, пока не выполняться все ее select-запросы, что мне изрядно мешало.

Решение состоит в том, что модель стал наследовать от QAbstractTableModel. Тогда все вставки в таблицу происходят без проблем.
AD Дата 21.4.2011, 17:01
  О. Все-таки каких-то результатов удалось добиться. Смысл в том, что модель, унаследованная от QSqlTableModel блокирует базу данных, в результате чего возникают данные ошибки. Попробую разобраться в этом, тем более, что я видел, что QSqlLite как-то странно работает с моделями. Об этом я видел в ассистенте сообщение.
AD Дата 21.4.2011, 9:19
 
Цитата(MoPDoBoPoT @ 19.4.2011, 22:29) *
Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал.

Тоже считаю, что странно. Но пока ничего не выходит. А проблему очень надо решить. Буду безумно благодарен, если сможешь помочь. Никаких EXCLUSIVE не использовал.
MoPDoBoPoT Дата 19.4.2011, 21:29
  Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал.
AD Дата 18.4.2011, 9:07
 
Цитата(MoPDoBoPoT @ 14.4.2011, 22:49) *
Если только приаттачить (ATTACH DATABASE) файл БД, после чего переписать туда данные. Но лучше разобраться с проблемой транзакций и писать сразу в файл. Мне кажется, можно попробовать создать отдельное соединение для изменения данных в БД, чтобы не искать активные запросы и сбрасывать их.

Сделал новое соединение, специально, чтобы делать выборки и вставки в БД. В итоге получил следующую ошибку при транзакции:
Цитата
database is locked Unable to commit transaction

Как решить эту проблему?
MoPDoBoPoT Дата 14.4.2011, 21:49
 
Цитата(AD @ 14.4.2011, 11:38) *
Либо я чего-то не понял, либо еще что-то, но загружать БД в память, а потом сохранять в файл не получилось.

Если только приаттачить (ATTACH DATABASE) файл БД, после чего переписать туда данные. Но лучше разобраться с проблемой транзакций и писать сразу в файл. Мне кажется, можно попробовать создать отдельное соединение для изменения данных в БД, чтобы не искать активные запросы и сбрасывать их.
AD Дата 14.4.2011, 10:38
  Либо я чего-то не понял, либо еще что-то, но загружать БД в память, а потом сохранять в файл не получилось. Прошу, кто может помочь, помогите, пожалуйста. Очень необходимо поправить глюк с транзакциями. Я не понимаю в чем ошибка...
AD Дата 13.4.2011, 9:32
 
Цитата(MoPDoBoPoT @ 12.4.2011, 22:19) *
Возможно, что где-то ещё активные запросы, например, табличные модели.

А как в табличных моделях сделать неактивными запросы?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:07