crossplatform.ru

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

> Запрос вставки, с помощью QSqlQuery
AD
  опции профиля:
сообщение 28.3.2011, 11:12
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Есть запросы вставки записи в таблицу, подобные данной:
QSqlQuery query(QSqlDatabase::database("conn_1"));
query.prepare(QString("insert into ScriptLayer(ScriptItemId, LayerNameId) values(%1, -1)").arg(id));
bool ins = query.exec();
Проверяю. ins = true. При этом в саму таблицу ничего не добавилось. Как такое возможно? Естественно, что при закрытии приложения никаких удалений не делаю.

Сообщение отредактировал AD - 28.3.2011, 11:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
MoPDoBoPoT
  опции профиля:
сообщение 19.4.2011, 21:29
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 21.4.2011, 9:19
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(MoPDoBoPoT @ 19.4.2011, 22:29) *
Странно. Блокировку можно получить, когда в рамках разных транзакций происходит попытка изменения БД, но у тебя же одно подключение читает, а другое пишет... Может ещё быть из-за уровня изоляции транзакции EXCLUSIVE, но я не думаю, что ты его указывал.

Тоже считаю, что странно. Но пока ничего не выходит. А проблему очень надо решить. Буду безумно благодарен, если сможешь помочь. Никаких EXCLUSIVE не использовал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 21.4.2011, 17:01
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


О. Все-таки каких-то результатов удалось добиться. Смысл в том, что модель, унаследованная от QSqlTableModel блокирует базу данных, в результате чего возникают данные ошибки. Попробую разобраться в этом, тем более, что я видел, что QSqlLite как-то странно работает с моделями. Об этом я видел в ассистенте сообщение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.4.2011, 13:59
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Проблема решена. Дело вот в чем. Моя модель SqlFileModel наследовалась от QSqlTableModel, а у QSqlTableModel есть особенность при работе с SQLite она блокирует БД, пока не выполняться все ее select-запросы, что мне изрядно мешало.

Решение состоит в том, что модель стал наследовать от QAbstractTableModel. Тогда все вставки в таблицу происходят без проблем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Запрос вставки   28.3.2011, 11:12
- - BRE   А если в программе sqlbrowser попробовать добавить...   28.3.2011, 12:11
|- - AD   Цитата(BRE @ 28.3.2011, 13:11) А если в п...   28.3.2011, 12:42
- - MJIbIu   Цитата(AD @ 28.3.2011, 11:12) query.prepa...   28.3.2011, 15:18
|- - AD   Цитата(MJIbIu @ 28.3.2011, 16:18) А попро...   28.3.2011, 15:40
|- - MJIbIu   Цитата(AD @ 28.3.2011, 15:40) Цитата(MJIb...   28.3.2011, 15:52
|- - AD   Цитата(MJIbIu @ 28.3.2011, 16:52) query.p...   28.3.2011, 16:36
|- - MJIbIu   Цитата(AD @ 28.3.2011, 17:36) При добавле...   28.3.2011, 17:03
|- - AD   Цитата(MJIbIu @ 28.3.2011, 18:03) http://...   29.3.2011, 11:24
|- - AD   Буду рад, если поможете. Не понимаю, как сделать п...   29.3.2011, 15:17
|- - AD   Неужели ни у кого не было подобной проблемы при ра...   30.3.2011, 11:01
|- - MJIbIu   Цитата(AD @ 29.3.2011, 16:17) Буду рад, е...   30.3.2011, 13:07
|- - AD   Цитата(MJIbIu @ 30.3.2011, 14:07) bool QS...   30.3.2011, 13:26
|- - AD   Вернулся к СУБД Paradox. Решение на данную проблем...   31.3.2011, 11:38
|- - AD   В связи с тем, что скорость работы на Paradox мале...   11.4.2011, 9:22
- - MoPDoBoPoT   Цитата(QtAssistant)bool QSqlQuery::isActive () con...   11.4.2011, 21:41
|- - AD   Цитата(MoPDoBoPoT @ 11.4.2011, 22:41) Поп...   12.4.2011, 9:32
|- - AD   В результате долгих копаний. Кое-что смог выяснить...   12.4.2011, 14:18
- - MoPDoBoPoT   Цитата(AD @ 12.4.2011, 10:32) Пробовал. Н...   12.4.2011, 21:19
|- - AD   Цитата(MoPDoBoPoT @ 12.4.2011, 22:19) Воз...   13.4.2011, 9:32
|- - AD   Либо я чего-то не понял, либо еще что-то, но загру...   14.4.2011, 10:38
- - MoPDoBoPoT   Цитата(AD @ 14.4.2011, 11:38) Либо я чего...   14.4.2011, 21:49
|- - AD   Цитата(MoPDoBoPoT @ 14.4.2011, 22:49) Есл...   18.4.2011, 9:07
- - MoPDoBoPoT   Странно. Блокировку можно получить, когда в рамках...   19.4.2011, 21:29
|- - AD   Цитата(MoPDoBoPoT @ 19.4.2011, 22:29) Стр...   21.4.2011, 9:19
|- - AD   О. Все-таки каких-то результатов удалось добиться....   21.4.2011, 17:01
|- - AD   Проблема решена. Дело вот в чем. Моя модель SqlFil...   22.4.2011, 13:59
- - MoPDoBoPoT   Цитата(AD @ 22.4.2011, 14:59) она блокиру...   22.4.2011, 21:09
- - AD   Цитата(MoPDoBoPoT @ 22.4.2011, 22:09) В с...   22.4.2011, 23:08


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 22:31