SQLite / Arbeitsspeicher

Alles rund um die Programmierung mit Qt
Antworten
RobRoy1304
Beiträge: 47
Registriert: 9. Juli 2009 10:56

SQLite / Arbeitsspeicher

Beitrag von RobRoy1304 »

Hallo,

ich hab mal eine Frage zum ''Speicherverbrauch''. Wenn ich in einer SQLite-Datenbank
viele Datensätze habe(mehere 10000) wie verhält sich das mit dem Speicher bei der
Abfrage der Datensätze:

Code: Alles auswählen

int CDbInterface::get_all_dealer_where(QString sCondition,QList <CDealer> & lsDealer)
{
    if(!m_bIsConnect)
        return -1;
    int i=-1;
    CDealer de;
    QString s;
    if(sCondition.length()!=0)
    {
        s=QString("SELECT * FROM dealer WHERE ");
        s+=sCondition;//+condition
    }
    else
        s=QString("SELECT * FROM dealer");
    QSqlQuery query;
    bool b=query.exec(s);
    if(b)
    {
        QSqlRecord record=query.record();
        for(;query.next();i++)
        {
            de.set_id(query.value( record.indexOf("id")).toInt());
            de.set_name(query.value( record.indexOf("name")).toString());
            de.set_adress(query.value( record.indexOf("adress")).toString());
            de.set_callnumber(query.value( record.indexOf("call_numbers")).toString());
            de.set_faxnumber(query.value( record.indexOf("fax_numbers")).toString());
            de.set_email(query.value( record.indexOf("email_adress")).toString());
            de.set_homepage(query.value( record.indexOf("homepage")).toString());
            de.set_contectperson(query.value( record.indexOf("contect_person")).toString());
            de.set_comment(query.value( record.indexOf("comment")).toString());
            de.set_customernumber(query.value( record.indexOf("customer_number")).toString());
            lsDealer.push_back(de);
        }
        i++;
    }
    return i;
}
Werden in der Zeile

Code: Alles auswählen

QSqlRecord record=query.record();
alle Datensätze
in den Arbeitsspeicher geschrieben oder werden die Datensätze ''einzelnd'' aus
der Datenbank-Datei mit hilfe der ''query.next()''-Methode nachgeladen????

Ich möchte in meinen Programm möglichst ''Speicherschonend'' arbeiten, damit
das Programm auch auf älteren Rechner funktioniert. Und wenn der Speicher
''überläuft'' und diese Daten dann auf die Festplatte ausgelagert werden, wird
das Programm extrem langsam, erstrecht auf alten Rechnern.

Kennt sich jemand damit aus??? thx
RobRoy
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Was du suchst ist http://doc.trolltech.com/4.5/qsqlquery. ... orwardOnly

Allerdings sehe ich auf den ersten Blick nicht gerade, wie das vom SQLite-Plugin behandelt wird... am schnellsten wäre vermutlich, einfach schnell den Speicherbedarf des Programmes zu messen (mit und ohne setForwardOnly)..

hth
RobRoy1304
Beiträge: 47
Registriert: 9. Juli 2009 10:56

Beitrag von RobRoy1304 »

ich probier es mal , dankeschön
Antworten