SQlite gibt nicht alle Datensätze aus
-
Abend,
Ich arbeite gerade an einem tool das 5 einträge in eine sql DB schreibt und sie anschließen wieder ausgiebt, ich habe folgenden code(SQLite wiki):#include <iostream> #include <conio.h> #include <sqlite3.h> using namespace std; int main() { sqlite3 *database = 0; sqlite3_open("database.db",&database); sqlite3_exec(database,"INSERT INTO bots(id,ip) VALUES ('0','127.0.0.1')",0,0,0); sqlite3_exec(database,"INSERT INTO bots(id,ip) VALUES ('1','127.0.0.2')",0,0,0); sqlite3_exec(database,"INSERT INTO bots(id,ip) VALUES ('2','127.0.0.3')",0,0,0); sqlite3_exec(database,"INSERT INTO bots(id,ip) VALUES ('3','127.0.0.4')",0,0,0); sqlite3_exec(database,"INSERT INTO bots(id,ip) VALUES ('4','127.0.0.5')",0,0,0); char **result = 0; int num_rows = 0, num_cols = 0; sqlite3_get_table(database,"SELECT id,ip FROM bots",&result,&num_rows,&num_cols,0); for(int row = 2;row <= num_rows;++row) { std::cout << result[ row ] << std::endl; } sqlite3_free_table(result); sqlite3_close(database); getch(); return 0; }
Das Problem ist das er aber nur das ausgibt:
0
127.0.0.1
1
127.0.0.2Habe ich da irgendwas mit den querys falsch gemacht?
-
Deine Schleife ist falsch, ich habs mal bissle geändert, so gehts
zumindest bei mir:char **result = 0; int zahlZeilen; int zahlSpalten; sqlite3_get_table(Database, read->Text.c_str(), &result, &zahlZeilen, &zahlSpalten, 0); String s; for(int zeile=0; zeile<(zahlZeilen*zahlSpalten)+1; zeile=zeile+zahlSpalten) { s = ""; for(int spalte=0; spalte<zahlSpalten; spalte++) { s = s + "|"; s = s + result[zeile+spalte]; s = s + "|"; } } sqlite3_free_table(result);
Ich schreib die Ergebnisse halt in nen String aber ansonsten ist es gleich.
-
achja, zur Begründung:
Du hast ja nicht nur einen Eintrag pro Zeile sondern mehrere,
in deinem Fall zwei.
Es reicht also nicht bis zur max Anzahl der Zeilen zu laufen.Meine Lösung war jetzt Zeilen * Spalten + 1.
Warum die +1 kann ich dir ehrlich gesagt nicht sagen ich hab
nur gemerkt das er immer eine Zeile zu wenig ausgibt und die dann
halt noch eingefügt aber vlt kann da ja jmd anderes was zu sagen?BTW: hier kann man das gut sehen:
http://www.sqlite.org/c3ref/free_table.html