asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Ich bastel im Moment ein Projekt mit SQLite. Aus meiner Datenbank frage ich zuerst nach
Einer Auswahl von Monstern die im aktuellen Level auftauchen können und wähle dann
daraus (noch nicht implementiert) diejenigen Monster aus, die letztendlich in das Level
gesetzt werden:
Das Problem liegt bei "int group[32], size[32];". Bei der Datenbank, wie sie im Moment
aussieht, können nicht mehr als 32 Monsterklassen ausgewählt werden. Mir wäre es aber
wesentlich lieber, SQLite zu fragen, wie viele Ergebnisse die Abfrage liefern wird, so dass
ich die beiden Arrays dynamisch bemessen kann. Geht das?
Davon abgesehen: Ich bin auch alles andere als ein SQL Experte. Also, wenn meine State-
ments scheiße sind, sagt das auch, damit ichs besser machen kann.
Einer Auswahl von Monstern die im aktuellen Level auftauchen können und wähle dann
daraus (noch nicht implementiert) diejenigen Monster aus, die letztendlich in das Level
gesetzt werden:
Code:
void selectmobs(int dlvl, sqlite3 *db) {
/* int maxsize = 4000; */
int i, j, ret, row, lastrow = 0;
int group[32], size[32];
sqlite3_stmt *statement;
sqlite3_prepare(db, "SELECT grp FROM mobs WHERE"\
"((dlvlmin <= :dlvl) AND (dlvlmax >= :dlvl)) ORDER BY grp;",
BUFSIZE, &statement, NULL);
sqlite3_bind_int(statement, 1, dlvl);
i = 0;
do {
ret = sqlite3_step(statement);
if(ret == SQLITE_ROW) {
row = sqlite3_column_int(statement, 0);
if(row != lastrow) {
group[i++] = row;
lastrow = row;
}
}
} while(ret != SQLITE_DONE);
sqlite3_finalize(statement);
sqlite3_prepare(db, "SELECT size FROM mobgroups WHERE id = :grp;",
BUFSIZE, &statement, NULL);
for(j = 0; j < i; j++) {
sqlite3_bind_int(statement, 1, group[j]);
do {
ret = sqlite3_step(statement);
if( ret == SQLITE_ROW) {
size[j] = sqlite3_column_int(statement, 0);
printf("size[%d] = %d\n", group[j], size[j]);
}
} while(ret != SQLITE_DONE);
sqlite3_reset(statement);
}
sqlite3_finalize(statement);
}
Das Problem liegt bei "int group[32], size[32];". Bei der Datenbank, wie sie im Moment
aussieht, können nicht mehr als 32 Monsterklassen ausgewählt werden. Mir wäre es aber
wesentlich lieber, SQLite zu fragen, wie viele Ergebnisse die Abfrage liefern wird, so dass
ich die beiden Arrays dynamisch bemessen kann. Geht das?
Davon abgesehen: Ich bin auch alles andere als ein SQL Experte. Also, wenn meine State-
ments scheiße sind, sagt das auch, damit ichs besser machen kann.