從游標讀取資料
SELECT 查詢與任何其他語句一樣執行 。要讀取返回的資料,請在迴圈中呼叫 sqlite3_step()
。它返回:
- SQLITE_ROW:如果下一行的資料可用,或者
- SQLITE_DONE:如果沒有更多行,或者
- 任何錯誤程式碼。
如果查詢未返回任何行,則第一步返回 SQLITE_DONE。
要從當前行讀取資料,請呼叫 sqlite3_column_xxx()
函式:
const char *sql = "SELECT ID, Name FROM MyTable";
sqlite3_stmt *stmt;
int err;
err = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (err != SQLITE_OK) {
printf("prepare failed: %s\n", sqlite3_errmsg(db));
return /* failure */;
}
for (;;) {
err = sqlite3_step(stmt);
if (err != SQLITE_ROW)
break;
int id = sqlite3_column_int (stmt, 0);
const char *name = sqlite3_column_text(stmt, 1);
if (name == NULL)
name = "(NULL)";
printf("ID: %d, Name: %s\n", id, name);
}
if (err != SQLITE_DONE) {
printf("execution failed: %s\n", sqlite3_errmsg(db));
sqlite3_finalize(stmt);
return /* failure */;
}
sqlite3_finalize(stmt);
return /* success */;