"select * from" mit SQLite



  • Morgen!

    Vorab mein Code:

    #include <iostream>
    #include <stdlib.h>
    #include <sqlite.h> 
    
    sqlite *datenbank; // unsere Datenbank
    
    using namespace std;
    
    int Callback( void *Pointer, int argc, char **argv, char **columnNames)
    {
    cout<< *argv <<endl; 
    return 0;
    }
    
    int main(int argc, char *argv[])
    {
    
    datenbank = sqlite_open( "db" , 0 , NULL);
    
    sqlite_exec( datenbank , "create table geburtstage(number integer , eintrag text , datum date ,primary key(number));" , NULL , NULL , NULL);
    
    sqlite_exec( datenbank , "insert into geburtstage ( eintrag,datum ) values ( 'Testeintrag 2','2004-10-11' );" , NULL , NULL , NULL); 
    
    sqlite_exec( datenbank , "select eintrag from geburtstage;" , Callback , NULL , NULL);
    
    sqlite_close(datenbank);
    
    system("PAUSE"); 
    return 0;
    }
    

    ... Funktioniert soweit auch super ... wenn ich

    "select eintrag from geburtstage"
    

    mache ... was aber ist, wenn ich

    "select number,eintrag,datum from geburtstage"
    

    haben will? Klar, in SQL funktioniert das so und ich verstehe auch, dass SQLite in der Callback- Funktion Pointer auf die Felder der Datenbank vergibt ... wie aber krieg ich das jetzt gebacken, dass ich eben nicht nur das erste Attribut kriege, sondern auch eintrag und datum?



  • ka maybe ein

    "select * from geburtstage"



  • Nope ... leider nicht. Hat den selben Effekt, ich krieg nur das erste Attribut.



  • dann nicht ein "*" sondern ALL

    http://www.sqlite.org/lang.html#select

    sag obs geklappt hat



  • Hmm .... naja.

    Wenn ich in der Callback- Funktion
    [/cpp]
    cout<< *argv[2] <<endl;
    [cpp]
    schreibe, krieg ich schon die 3te Relation, das ist gut. Jedoch nur den ersten Buchstaben *gg*. Also wenn z.B. die 3te Relation als Eintrag

    abc
    def
    ghi

    enthält, krieg ich grad mal

    a
    d
    g

    😮 Ich mein is schonmal nen Fortschritt, aber eben noch nich alles. ...

    Aso mit dem "ALL" klappt das so gar nicht, man muß wohl den * nehmen.



  • Versuch mal das Array "einfach" anzusprechen:

    cout << argv[0] << endl;
    cout << argv[1] << endl;
    cout << argv[2] << endl;
    ...

    Natürlich in einer Schleife ^^
    Also bei mir klappt es so...



  • He super .... klappt ^^ Danke und schöne Weihnachten :xmas1: :xmas2:


Anmelden zum Antworten