Ne sait pas comment récupérer la firebase database?

Je suis débutant avec sqlite et gtk. Je fais mon 1er projet en code :: blocks. J’ai un problème pour aller chercher la firebase database, mon code est:

#include  #include  #include  #include "sqlite3.c" #include  static int callback(void *data, int argc, char **argv, char **azColName){ int i; fprintf(stderr, "%s: ", (const char*)data); for(i=0; i1) fprintf(stdout, "Dulitcate user\n"); if(count<1) fprintf(stdout, "username and password is not correct\n"); } /* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); }else{ fprintf(stdout, "Operation done successfully\n"); } sqlite3_close(db); g_signal_connect(G_OBJECT(button1), "clicked", G_CALLBACK(gtk_main_quit), G_OBJECT(window)); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); 

Je fais face à un problème dans cette ligne (à partir du code ci-dessus):

  1. Dans l’instruction SELECT (je sais que c’est totalement faux, corrigez-le s’il vous plaît).
  2. Dans sqlite3_exec (db, sql, rappel, données (void *), & zErrMsg) ++ (dans la boucle while)

     /* Create SQL statement */ sql="SELECT * from user where username='char *entry1' and password='char *entry2 '"; if(sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg)) { int count=0; while(sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg)++) { count++; } if(count==1) fprintf(stdout, "username and password is correct\n"); if(count>1) fprintf(stdout, "Dulitcate user\n"); if(count<1) fprintf(stdout, "username and password is not correct\n"); } /* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); }else{ fprintf(stdout, "Operation done successfully\n"); } sqlite3_close(db); 

    S’il vous plaît, aidez-moi. J’ai vraiment besoin de quelqu’un help.thanx à l’avance

sqlite3_exec ne convient pas si vous souhaitez gérer les données renvoyées à l’emplacement où vous les interrogez et présente d’autres inconvénients.

Pour une requête, vous devez toujours utiliser sqlite3_prepare_v2 , puis appeler sqlite3_step dans une boucle. Pour obtenir des valeurs de variable dans l’instruction, utilisez les marqueurs de paramètre ( ? ) Et les fonctions sqlite3_bind * . Pour lire les valeurs renvoyées, utilisez les fonctions sqlite3_column_ * (mais dans ce cas, vous ne voulez réellement pas lire de valeurs).

 char *user = "Supu"; char *password = "secret"; sqlite3_stmt *stmt; const char *sql = "SELECT username, password FROM user WHERE username = ? AND password = ?"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); if (rc != SQLITE_OK) { fprintf(stderr, "error: %s, %s\n", sql, sqlite3_errmsg(db)); } else { sqlite3_bind_text(stmt, 1, user, -1, SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 2, password, -1, SQLITE_TRANSIENT); while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) { printf("returned row: user = %s, password = %s\n", sqlite3_column_text(stmt, 0), sqlite3_column_text(stmt, 1)); count++; } if (rc != SQLITE_DONE) fprintf(stderr, "error: %s\n", sqlite3_errmsg(db)); sqlite3_finalize(stmt); }