Russian Qt Forum
Ноябрь 24, 2024, 00:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаление всех записей из таблицы  (Прочитано 4319 раз)
Lostinnet
Гость
« : Сентябрь 24, 2010, 10:15 »

Подскажите как правильно удалять все записи из таблицы БД.
Пробую:

model->removeRows(0, model->rowCount());
model->submitAll();

записи удаляются очень медленно, и размер файла с БД остается прежним, не уменьшается
Записан
BaltikS
Гость
« Ответ #1 : Сентябрь 24, 2010, 10:23 »

размер файла с БД остается прежним, не уменьшается
Это не значит что записи не удаляются из БД. Они удаляются. Остаётся мусор. Это также зависит от БД.
Записан
Lostinnet
Гость
« Ответ #2 : Сентябрь 24, 2010, 10:28 »

Вижу что удаляется, но как увеличить скороть и избавится от мусора.
База SQLITE
Записан
crossly
Гость
« Ответ #3 : Сентябрь 24, 2010, 10:33 »

используй trancate table.... после удаления строк из таблицы размер БД меньше не станет... Улыбающийся.... строки резервируются для последующего использования...
Записан
voronElf
Гость
« Ответ #4 : Сентябрь 24, 2010, 10:56 »

модель поди по одной строке удаляет, потому и медленно (блокировки-разблокировки таблицы на каждой операции ). Можно конечно все удаление в одну транзакицю общую засунуть (по крайней мере при большом количестве запросов на запись, это дает выигрыш быстродействия очень ощутимый ). но лучше одним запросом DELETE FROM table_name . Запрос TRUNCATE здесь конечно лучше подойдет, только вот вроде SQLITE его не поддерживает.
Записан
Lostinnet
Гость
« Ответ #5 : Сентябрь 24, 2010, 11:14 »

Спасибо за советы!!!
TRUNCATE действительно почему то не работает ((
но DELETE с транзакцией очень помогло!

и еще один вопросик.
Почему после QSqlDatabase::removeDatabase("Journal"); файл с БД все равно остается недоступным для удаления? Тогда как правильно закрыть БД
Записан
BaltikS
Гость
« Ответ #6 : Сентябрь 24, 2010, 12:41 »

используй trancate table.... после удаления строк из таблицы размер БД меньше не станет... Улыбающийся.... строки резервируются для последующего использования...
Да зачем? После удаления VACUUM надо дать.....
Записан
BaltikS
Гость
« Ответ #7 : Сентябрь 24, 2010, 12:45 »

Почему после QSqlDatabase::removeDatabase("Journal"); файл с БД все равно остается недоступным для удаления? Тогда как правильно закрыть БД
ищи по форуму, уже обсуждалось неоднократно...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 21.