2011-09-13 7 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

「最後」とはどういう意味ですか?オートインクリメントID列がある場合は、「最後に挿入された」、または最大のIDを持つことを意味します。 Idがあなたのオートインクリメント・カラム名である

SELECT * FROM Places ORDER BY Id DESC LIMIT 10; 

:あなたはsqliteのを使用しているあなたのケースでは、あなたはこのようなものを使用することができます。この明細書では、テーブルPlacesのすべてのエントリを選択し、Idを降順で並べ、最初の10個の結果のみを使用します。いないすべてのデータベース・システムは、TOP句をサポート

SELECT TOP 10 * FROM Places ORDER BY Id DESC; 

しかしノート:あなたも試みることができるいくつかの他のデータベースで

あなたの問題を解決することを願っています。

関連する問題