如何在表视图中显示存储在数据库中的最后10个数据?

时间:2011-09-13 05:25:59

标签: iphone database uitableview nsdata

我有数据库,我在其中存储源地址,目的地地址和类别。现在我想在表视图中仅显示存储在该数据库中的最后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个结果?

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询,该查询仅提取最后10条记录。

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

答案 1 :(得分:0)

这取决于“最后”是什么意思?如果您有任何autoincrement id colunm,那么您可能意味着“最后插入”或具有最大id的那些。在您使用sqlite的情况下,您可以使用以下内容:

SELECT * FROM Places ORDER BY Id DESC LIMIT 10;

其中Id是您的自动增量列名称。该语句将从表Places中选择所有条目,然后按Id降序排序,并仅使用前10个结果。

在其他一些数据库中,您也可以尝试:

SELECT TOP 10 * FROM Places ORDER BY Id DESC;

注意并非所有数据库系统都支持TOP子句。

希望它能解决你的问题。