是否可以遍歷一個結果集,如果條件滿足,刪除當前行?刪除sqlite3的當前行,而遍歷一個結果集
即像
int rc;
sqlite3_stmt* statement;
sqlite3_exec(db, "BEGIN", 0, 0, 0);
sqlite3_prepare_v2(_db, "SELECT id,status,filename,del FROM mytable", -1, &statement, NULL);
rc = sqlite3_step(statement);
while (rc == SQLITE_ROW){
int id = sqlite3_column_int(statement, 1);
int status = sqlite3_column_int(statement, 2);
const unsigned char* filename = sqlite3_column_int(statement, 3);
int del = sqlite3_column_int(statement, 4);
if (status == 0 || del > 0){
int rc = unlink(filename);
if (rc == 0)
// Now delete the current row
else
// unlink failed, find out why, try again or ... ?
}
rc = sqlite3_step(statement);
}
sqlite3_finalize(statement);
sqlite3_exec(db, "COMMIT", 0, 0, 0);
我可以調用一個sql語句刪除符合條件的所有行,但我不想這樣做,如果出於某種原因取消鏈接失敗。
我可以調用一個操作來刪除當前行?
編輯: 因此,有一個叫ROWID專欄。我只是補充說,作爲 先前的語句中的一列,並創建另一個語句,如「從表中刪除rowid =?」並傳入當前的rowid?
這應該是正確的?這是最好的方法嗎?
好的,以及我得到它使用rowid工作。但仍然想知道這是否是最有效的方法。 – Matt 2011-02-08 03:10:10