M
Hi,
ich habe eine Datenbankdatei mit mit ca. 800 Datensätzen. Sie enthalten eine ID und die x,y,z Koordinaten. Mit dem folgenden Code habe ich sie schon mal sortiert, nach den zugehören IDs und schrebie es in eine Liste rein.
Da ich für jede ID in OpenGL eine Kugel erzeugen möchte die die Positionsdaten abfährt, wollte ich wissen, wie man das am besten machen kann.
Ich kann natürlcih wenn ich die ID kenne mit WHERE HostID is '2' filtern aber wenn ich das Programm, welches in DB reinschreibt, starte kann es sein das es die ID nicht gibt oder es meht Ids gibt als die ich abfrage. Und ich möchte es ja auch ohne die ID nachzuscheuen filtern können und das für jeden beliebigen Host.
Hat da jemand ein Idee oder ist es nicht möglich?
sqlite3_open( "C:\\OMNeT_Datenbank14.db" ,&datenbank);
if (SQLITE_OK != sqlite3_prepare_v2(datenbank, "SELECT * FROM omnet WHERE HostID ORDER BY 1", -1, &stmt, 0))
{
//Ausgabe von Fehler (z.B. bei Syntaxfehlern)
printf("Fehler beim Vorbereiten der SQL Anfrage: %s", sqlite3_errmsg(datenbank));
}
else {
sqlite3_prepare_v2(datenbank, "SELECT COUNT(*) FROM omnet", -1, &stmt2, 0);
sqlite3_step(stmt2);
//Solange Datensätze zurückgegeben werden
printf("Datensaetze: %d\n", sqlite3_column_int(stmt2, 0));
while (SQLITE_ROW == sqlite3_step(stmt))
{
//Werte aus Spalten 1, 2 und 3 ausgeben (Index startet bei 0)
printf("%s %s %s %s\n", sqlite3_column_text(stmt, 0),
sqlite3_column_text(stmt, 1),
sqlite3_column_text(stmt, 2),
sqlite3_column_text(stmt, 3));
Point3f* pkt = new Point3f();
pkt->X = sqlite3_column_double(stmt, 1);
pkt->Y = sqlite3_column_double(stmt, 2);
pkt->Z = sqlite3_column_double(stmt, 3);
punktliste.push_back(pkt);
}
}
//Statement löschen
sqlite3_finalize(stmt);
sqlite3_finalize(stmt2);
Danke und Grüße!