Sqlite3 statische libs direkte Query....

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Sqlite3 statische libs direkte Query....

Beitrag von patrik08 »

Mit grossem entusiasmus habe ich es geschaft mit wenige monaten qt4 erfahrung.... eine schlanke! 380KB statische Sqlite3 libs mit query anzusprechen ...
ob (select distinct feld from tablename) , oder (select * from tablename)ecc...

ohne nur auch die 2 QtSqld* dll zu gebrauchen fast 2 MB zusammen...
der enorme vorteil ist auch die -static compilation ... somit braucht die exe keine dll... sondern hat bereits alles...

Code: Alles auswählen

/* definizion qt4 */
typedef QMap<int, QStringList> resultMap;
/* classe mit open & close ecc... */

resultMap Sqlitedb::Query_Qmap_Report(const QString & fullquery)
{
    resultMap res;
    if (!isOpen()) {
    return res;  /* not connect! */
    }
   SqlLog(QString( "%1 from Query_Qmap_Report 1" ).arg( fullquery ));  /* internal log */
   sqlite3_stmt *vm;
   const char *tail;
   int ncol;
   /*int rownum = 0;*/
   int recnum = 0;
   QString r;
   int err=0;
   QStringList linelister;
   err=sqlite3_prepare(_db,fullquery.toUtf8().constData(),-1,&vm, &tail);
    if (err == SQLITE_OK) {
            while ( sqlite3_step(vm) == SQLITE_ROW ){
               ncol = sqlite3_data_count(vm);
               recnum++;
               linelister.clear();
                    /*file_put_contents_append_debug("resloop.dat","--------------------");*/
                    for (int e=0; e<ncol; e++){
                    r = QString::fromUtf8((const char *) sqlite3_column_text(vm, e));
                    linelister.append(r);
                    /*file_put_contents_append_debug("resloop.dat",QString("%1 dat = %2" ).arg( QString::number(e) , r ));*/
                    }
             res.insert(recnum,linelister);
            }
       sqlite3_finalize(vm);
    } else {
     lastErrorMessage = QString::fromUtf8(sqlite3_errmsg(_db));
    }
    
return res;  
}


/* die daten holen ... darstellen individuell */
resultMap res = Query_Qmap_Report("SELECT id, anrede, name, ort FROM tablename order by ort");


 int summitem = res.size();
        file_put_contents_append("looper.doc",QString("gefunden %1 " ).arg( QString::number(summitem) ));
        resultMap::Iterator it;
        for ( it = res.begin(); it != res.end(); ++it ) {
	    QStringList fullrow = it.value();
        QString firstline = fullrow.join ("|");
        QString dat =QString("nr. %1 data = [%2]" ).arg( QString::number(it.key()) , firstline);
        file_put_contents_append("looper.doc",dat);
        }



Antworten