2011-09-13 66 views
0

我有我在其中存儲源地址,目標地址和類別的數據庫。現在我只想在表格視圖中顯示存儲在該數據庫中的最後10個數據。我使用的檢索數據表格數據庫,這個代碼...如何在數據庫中顯示存儲在表視圖中的最後10個數據?

-(void) openDB { 

listOfStudents = [[NSMutableArray alloc] init]; 
if(sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) { 
    const char *sql = "select * from Places"; 
    sqlite3_stmt *stmt; 
    int rtnVal = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); 
    if(rtnVal == SQLITE_OK) { 
     while (sqlite3_step(stmt) == SQLITE_ROW) { 
      Places_data *pd_object = [[[Places_data alloc] init] autorelease]; 
      pd_object.place_id = sqlite3_column_int(stmt, 0); 
      pd_object.start_add = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 1)]; 
      pd_object.end_add = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 2)]; 
      pd_object.strcategroy = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 3)]; 

      [self.listOfStudents addObject:pd_object]; 
     } 
    } 
    sqlite3_finalize(stmt); 
} 
sqlite3_close(db); 

}

現在我做什麼,在上面的代碼中顯示的變化,它僅顯示過去10個結果表視圖?

回答

1

你可以使用下面的查詢,它只會抓取最後10條記錄。

const char *sql = "SELECT * FROM Places order by rowid desc limit 10"; 
0

這取決於什麼意思是「最後」?如果您有任何自動增量編號,那麼您可以指「最後插入」或最大編號的那些。在你的情況,你在哪裏使用SQLite,你可以使用這樣的事情:

SELECT * FROM Places ORDER BY Id DESC LIMIT 10; 

哪裏Id是你的自動增量列名。該聲明將選擇表Places中的所有條目,然後按Id降序排列,並使用前10個結果。

在其他一些數據庫,你可以搜索:

SELECT TOP 10 * FROM Places ORDER BY Id DESC; 

,並非所有的數據庫系統都支持TOP子句。

希望它能解決您的問題。

相關問題