SQLite auslese Problem



  • Hier ist die Funktion die ich benutze um die Daten zu holen :

    std::vector<SQLiteVector::strVector> DataBase::GetTable(std::string cmd)
    {
        char*  errorMsg = 0;
        char** cData = 0;
        int line = 0;
        int column = 0;
    
        int result = sqlite3_get_table(db, cmd.c_str(),
                          &cData,
                          &line, &column,
                          &errorMsg );
    
        std::vector<SQLiteVector::strVector> data;
    
        if(result != SQLITE_OK)
        {
             sqlite3_free(errorMsg);
             sqlite3_free_table(cData);
             throw SQLiteError(errorMsg);
        }
    
        if(line>0)
        {
            for(int j=0;j<line;++j)
            {
                data.push_back(SQLiteVector::strVector());
                for(int i=0;i<column;++i)
                {
                    const char* str = cData[j*column + i];
                    data[j].push_back(str ? str : "");
                }
            }
            sqlite3_free_table(cData);
        }
        return data;
    }
    

    Nun will ich den Vector auslesen

    vector<SQLiteVector::strVector> data = db.GetTable("select * from address");
    
            for(std::size_t j=0;j<data.size();j++)
            {
                for(std::size_t i=0;i<data[j].size();i++)
                {
                    cout << data[j][i] << endl;
                }
            }
        }
    

    Leider liest er die letzte Zeile nie aus. Was mach ich falsch 😕



  • hmm anscheinend will mir keiner helfen ?

    ich habe einfach mal line+1 gesetzt also :

    if(line>0)
        {
            for(int j=0;j<line+1;++j)
            {
                data.push_back(SQLiteVector::strVector());
                for(int i=0;i<column;++i)
                {
                    const char* str = cData[j*column + i];
                    data[j].push_back(str);
                }
            }
            sqlite3_free_table(cData);
        }
    

    und schon liest er die letzte Zeile aus komisch



  • Liegt evtl. daran, dass er dir auch noch die Table-Attribute als Zeile zurückliefert. line enthält dann die Anzahl der Zeilen, die du haben möchtest. Die erste Zeile besteht aber aus den Attributen!

    Kenne mich mit SQLite ehrlich gesagt nicht sonderlich gut aus, aber ein kurzes Nachschlagen in der Referenz ließ diese Vermutung aufkommen.


Anmelden zum Antworten