Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在表视图中显示数据库中存储的最后10个数据?_Iphone_Database_Uitableview_Nsdata - Fatal编程技术网

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

Iphone 如何在表视图中显示数据库中存储的最后10个数据?,iphone,database,uitableview,nsdata,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";

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

您可以使用以下查询,该查询只获取最后10条记录

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

这取决于“最后”是什么意思?如果您有任何autoincrement id colunm,那么您可能指的是“last inserted”或具有最大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子句

希望它能解决你的问题