Название: SQL Отправлено: codeLocker от Сентябрь 02, 2005, 13:38 При открытии конкретной записи из БД SQLite не возможно удалить ее-же использовав другой экземпляр QSqlQuery
Код:
Это глюк или так и надо? Если это правильноая реакция, то можно ли как-то отключить такое поведение? Название: SQL Отправлено: Admin от Сентябрь 02, 2005, 15:02 а у тебя база какая
с транзакциями или нет? Название: SQL Отправлено: codeLocker от Сентябрь 02, 2005, 15:22 Цитата: "Admin" а у тебя база какая с транзакциями или нет? Да, транзакции поддерживает. Название: SQL Отправлено: Admin от Сентябрь 02, 2005, 17:50 не забываешь commit делать?
Название: SQL Отправлено: codeLocker от Сентябрь 03, 2005, 09:02 Делаю так:
Код:
где QSqlDatabase db; Название: SQL Отправлено: Admin от Сентябрь 03, 2005, 10:57 очевидно у тебя тогда драйвер или база глючат
а что за база? Название: SQL Отправлено: codeLocker от Сентябрь 03, 2005, 11:37 Цитата: "Admin" очевидно у тебя тогда драйвер или база глючат а что за база? SQLite Может в определении таблицы что-то не то? Код:
Название: SQL Отправлено: Admin от Сентябрь 03, 2005, 21:08 да нет все верно вроде
Название: SQL Отправлено: codeLocker от Сентябрь 04, 2005, 12:58 я земетил, если сделать так:
Код:
то запись удаляется, видимо там стоит какая-то блокировка если она сейчас является текущей. Вот как бы ее отключить? Название: SQL Отправлено: Admin от Сентябрь 04, 2005, 13:17 багня похоже какая то
Название: Re: SQL Отправлено: varita91 от Апрель 02, 2018, 10:44 По моим исследования работы Qt с SQLite
Во-первых, запрос возвращает ошибку если содержит ";" (т.к. не поддерживает множественность) - хотя и выполняется вроде как Цитировать queryApply->prepare( "DELETE FROM users WHERE id=:id;"); Во-вторых, нужно закрывать все запросы сразу после выполнения (сделали INSERT и выполнили, например, query.clear(); далее уже можем сделать DELETE по вставленной записи и снова закрыть запрос query2.clear(); В-третьих, при работе с транзакциями нужно учитывать уровень изоляции READ COMMITED по умолчанию, только зафиксированные изменения можно увидеть, а в рамках транзакции видим только данные на момент ее открытия, хоть и, например, добавили запись В-четвертых, не исключено возникновение блокировок всей БД на запись - тоже обрабатывайте В-пятых, наткнулась что вот такой код попробует выполнить вставку 3 раза Код: QSqlQuery query(strQ); Поэтому стараюсь использовать вот такую конструкцию Код: QSqlQuery query; |