sqlite



  • Hallo,

    ich hab nochmal eine frage und zwar will ich aus eine sqlite3 datenbank werte rauslesen, mach dies derzeit aber nur mit einer callback funktion. dann kann ich aber im programm nicht mit diesen werten weiter rechnen. jetzt wollte ich fragen, ob mir jemand ein beispiel zeigen kann, wie man das machen kann, ohne einer callback funktion.

    schöne grüße

    gucky



  • #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <sqlite3.h>
    
    #define USER_SQL "SELECT * FROM readkeys"
    
    void error_handler(sqlite3* db) 
    {
      fprintf(stderr, "Error: %s\n", sqlite3_errmsg(db));
      exit(EXIT_FAILURE);
    }
    
    int main(int argc, char** argv)
    {
       sqlite3* db;
       struct sqlite3_stmt* userqry;
    
       if (sqlite3_open("keys.db", &db))
          error_handler(db);
    
       if (sqlite3_prepare(db, USER_SQL, strlen(USER_SQL), &userqry, NULL))
          error_handler(db);
    
       while(sqlite3_step(userqry) == SQLITE_ROW)
       {
          printf("Name:%s, \n", sqlite3_column_text(userqry, 0));
          printf("Email:%s, \n", sqlite3_column_text(userqry, 1));
          printf("HomeTel:%s, \n", sqlite3_column_text(userqry, 2));
          printf("OfficeTel:%s, \n", sqlite3_column_text(userqry, 3));
    
       }
       sqlite3_finalize(userqry);
    	sqlite3_close(db);
    
       return 1;
    }
    


  • danke, ich hab zwar inzwischen was gefunden gehabt aber es hilft mir trotzdem weiter



  • Hallo,
    ich würde auch gerne die Werte auslesen, allerdings nicht als Text, sondern so wie sie gespeichert sind, in meinem Fall als Integer, um mit ihnen weiter zu arbeiten.

    while (sqlite3_step(stmt) == SQLITE_ROW) 
    	{
    		printf("%u\n", sqlite3_column_int(stmt, 0));
    		stmt_count++;
    	}
    
    //int z = sqlite3_column_int(stmt, 0);
    

    Das klappt so auch ganz wunderbar, aber wenn ich mir jetzt mit einem Wert weiterarbeiten möchte, dann komme ich nicht an den "orginalen" integer-Wert dran, der mir ausgegeben wird. 😞
    Was mache ich falsch?? Ich habe es auch schon mit Hilfe der Callback Funktion versucht, aber auch das habe ich das Problem, das die Textausgabe funktioniert, sobald ich aber den "echten" Wert haben möchte, bekomme ich nur das Zeierkomplement, oder andere Werte.
    Kann mir jemand sagen was ich falsch mache??


Anmelden zum Antworten