這是我用來從我的數據庫中選擇一些記錄的代碼。我將兩個日期綁定到我的sql中,但是,當我到達sqlite3_step時,我得到了SQLITE_DONE,我應該獲得SQLITE_ROW。它看起來像處理綁定而不是查詢數據。iPhone,sqlite3,我如何將值傳遞給select語句?
我在做什麼錯?
NSString *startDateRangeString = @"2000-05-01";
NSString *endDateRangeString = @"2011-05-01";
sqlite3 *database;
int result = sqlite3_open("mydb.db", &database);
if(result != SQLITE_OK)
{
NSLog(@"Could not open db.");
}
const char *sql = "select pid from tmp where due >= '%@' and due < '%@' order by due, pid;";
sqlite3_stmt *statementTMP;
int error_code = sqlite3_prepare_v2(database, sql, -1, &statementTMP, NULL);
if(error_code == SQLITE_OK) {
sqlite3_bind_text(statementTMP, 1, [startDateRangeString UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(statementTMP, 2, [endDateRangeString UTF8String], -1, SQLITE_TRANSIENT);
int step_error_code = sqlite3_step(statementTMP);
while(sqlite3_step(statementTMP) == SQLITE_ROW) // I get 101 aka SQLITE_DONE
{
NSLog(@"Found!!");
}
}
sqlite3_finalize(statementTMP);
sqlite3_close(database);
這是正確的答案嗎? – Pavan 2010-10-01 13:28:09
Pavan,我錯了嗎? – kovpas 2010-10-01 13:29:19
這是正確的,因爲他修正了位置參數。 Grr,我的相似答案第一次來:) – 2010-10-01 13:30:17