crossplatform.ru

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


  Ответ в Утечка памяти QSqlQuery.next()
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
guest456 Дата 2.8.2017, 13:38
 
Цитата(lanz @ 2.8.2017, 2:18) *
Я посмотрел исходники, там драйвер кеширует результаты, поэтому да, вы правы, он все съел :)
Попробуйте LIMIT/OFFSET как я писал выше.

Благодарю. А то я уже не знал что думать. Попробую как вы сказали. :)
lanz Дата 2.8.2017, 13:18
  Я посмотрел исходники, там драйвер кеширует результаты, поэтому да, вы правы, он все съел :)
Попробуйте LIMIT/OFFSET как я писал выше.
guest456 Дата 2.8.2017, 13:11
 
Цитата(lanz @ 2.8.2017, 1:52) *
SELECT * FROM ... LIMIT x OFFSET y ORDER BY ...

Например, но вообще странно, вы уверены что имено query жреть память, а не код внутри цикла?


К сожалению, это так. Т.е вот этот пустой цикл:
        while(query.next())
        {

        }


Вызывает эту ошибку



Уже и пробовал ставить qt creator версии 4.8 - тоже самое. Не могу понять как же сделать выборку по всей базе (
lanz Дата 2.8.2017, 12:52
 
SELECT * FROM ... LIMIT x OFFSET y ORDER BY ...

Например, но вообще странно, вы уверены что имено query жреть память, а не код внутри цикла?
guest456 Дата 2.8.2017, 12:45
  Добрый день уважаемые форумчане. Есть простейший код выборки из базы данных sqlite. Проблема в том, что в базе есть очень большое число различных строк. При работе с небольшими базами, проблем нет. А при большой базе, программа вылетает с ошибкой out of memory.

        if(!CreateConnection())
        {
            return;
        }
        QSqlQuery query;
        if(!query.exec("SELECT * FROM adress"))
        {
            qDebug() << query.lastError();
            return;
        }
        QString str;
        while(query.next())
        {
            //str= query.value(0).toString();
            //qDebug() << domen;
        }


При работе программы, количество потребляемой памяти доходит до 800MB и программа вылетает. Как правильно делать выборку с больших по размеру баз. Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 7:02