2016-10-13 3 views
0

Ich habe eine SQLite-Datenbank mit folgenden Daten erhält:Warum sqlite3_data_count() gibt 0 zurück, wenn die Datenbank Daten enthält?

[[email protected] ~]$ sqlite3 /home/ouhma/test.db "select col1, col2 from mytable;" 
201507|9063104793 
201507|9212527372 
201507|9212533474 
201507|9212575626 
201507|9212576618 
201507|9212587832 
201507|9322355921 
201507|9322743536 
201507|9334886428 
201507|9334901403 

Aber wenn ich versuche, die gleiche Abfrage auf diese Weise unter einem C-Programm läuft zu tun:

if (sqlite3_open(filedb, &db) != SQLITE_OK) { 
    fprintf(stderr, "Error opening db: %s\n", sqlite3_errmsg(db)); 
    return EXIT_FAILURE; 
} 

char * sql = "select col1, col2 from mytable;"; 

iret = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); 
if (iret != SQLITE_OK) { 
    printf("Error SQLITE %d when preparing the query.\n", iret); 
    return EXIT_FAILURE; 
} 

ncolumns = sqlite3_data_count(stmt); 
printf("Columns: %d\n", ncolumns); 

if (ncolumns == 0) { 
    printf("No data :(\n"); 
    sqlite3_finalize(stmt); 
    return EXIT_SUCCESS; 
} 

... 

Statt die von der Rückkehr die gleichen Zeilen wie zuvor, die Datenanzahl ist Null, und dann kann ich nicht die Informationen abrufen, die ich brauche.

[[email protected] ~]$ /home/ouhma/querydb2 /home/ouhma/query.txt /home/ouhma/test.db /home/ouhma/output.txt 
Columns: 0 
No data :(

Ich habe some C examples überprüft und die Vorbereitung Aussage sieht ok.

Also was entlasse ich? Warum gibt es 0 Zeilen zurück, wenn die Datenbank Daten enthält?

Antwort

1

Die documentation sagt:

Die sqlite3_data_count (P) Schnittstelle die Anzahl der Spalten in der aktuellen Zeile der Ergebnismenge der vorbereiteten Anweisung P. zurück, wenn vorbereitete Anweisung P haben die Ergebnisse nicht bereit zurückzukehren ... dann gibt sqlite3_data_count (P) 0 zurück.

Es gibt keine aktuelle Zeile; Die Anweisung hat keine Ergebnisse, die zurückgegeben werden können, weil Sie sie nie ausgeführt haben (mit sqlite3_step()).

+0

Vielen Dank. Die Anweisung, die ich benötigte, war 'sqlite3_column_count' nicht' sqlite3_data_count' – harrison4

Verwandte Themen