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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Работа с большой базой данных  (Прочитано 15267 раз)
herbuz
Гость
« Ответ #15 : Май 06, 2010, 16:06 »

Цитировать
QTableView! Изначально загрузиться и отобразиться в view небольшая часть данных из БД . Когда будешь тянуть вертикальный скрол и "дойдешь" до конца, то в этот момент подгрузятся еще данные (вызовится fetchMore). В этот момент, так как данных станет больше, число позиций для скрол бара увеличится. Я про этот лаг (ИМХО корявая реализация)!
С таблицей на 5000 записей QSqlQueryModel::fetchMore вызывается один раз!вроде как fetchMore не совсем подгружает данные, а инициирует возвращение данных из запроса принудительно(так я понял из асистента).
Записан
crossly
Гость
« Ответ #16 : Май 06, 2010, 16:11 »

угу... запрос запрашивает все данные fetchMore только добавляет их в модель...
Записан
herbuz
Гость
« Ответ #17 : Май 06, 2010, 16:14 »

угу... запрос запрашивает все данные fetchMore только добавляет их в модель...
Так зачем тогда в цикле его фигачить??? Шокированный
Записан
alexman
Гость
« Ответ #18 : Май 06, 2010, 16:45 »

угу... запрос запрашивает все данные fetchMore только добавляет их в модель...
Так зачем тогда в цикле его фигачить??? Шокированный

Из Qt Assistant:
void QSqlQueryModel::fetchMore ( const QModelIndex & parent = QModelIndex() )   [virtual]
Reimplemented from QAbstractItemModel::fetchMore().

Fetches more rows from a database. This only affects databases that don't report back the size of a query (see QSqlDriver::hasFeature()).

To force fetching of the entire database, you can use the following:

 while (myModel->canFetchMore())
     myModel->fetchMore();
parent should always be an invalid QModelIndex.

This function was introduced in Qt 4.1.

See also canFetchMore().
Записан
herbuz
Гость
« Ответ #19 : Май 06, 2010, 16:51 »

читал!получается что использование fetchMore бесполезно Непонимающий
Записан
alexman
Гость
« Ответ #20 : Май 06, 2010, 17:19 »

читал!получается что использование fetchMore бесполезно Непонимающий
Не понял?
Записан
herbuz
Гость
« Ответ #21 : Май 06, 2010, 17:32 »

читал!получается что использование fetchMore бесполезно Непонимающий
Не понял?
ну может я перевел плохо и не понимаю...но вижу картину так, что если база не возвращает количество данных, то для того чтобы вытянуть все данные приходиться юзать fetchMore() так ведь?
Судя по всему придется самому все писать(раньше делал все сам, за это ругали. говорили мол есть все уже-велосипед изобретаешь, теперь переучился, всегда стараюсь найти встроенные штуки....наверное лучше искать грань между обоими подходами, получается так что уже боюсь сам что-то писать!
Записан
alexman
Гость
« Ответ #22 : Май 06, 2010, 19:45 »

Придется писать самому! ИМХО это в Qt должно появится в будущем!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Июнь 24, 2010, 11:44 »

1. БД не указана. Допустим, огнептиц позволяет фечить, а в постгресе сразу все подгружается.
2.
читал!получается что использование fetchMore бесполезно Непонимающий
Этот цикл как раз для тех, кому сразу все надо. топикстартеру это использовать не нужно.
3. Так как у ТС тянет сразу все данные, то вариант тут писать свою модель, в которой при выкачивании данных использовать лимиты в sql запросе.
4. И никто не запрещает покопаться в соответствующем плагине, исправить и написать письмо в суппорт.
« Последнее редактирование: Июнь 24, 2010, 11:47 от Пантер » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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