0

CallItemオブジェクトがあり、ORMLite データベースを使用しています。指定されたテーブルの最後に項目を追加する必要があります。次のような新しいアイテムを作成します。

public void saveCallItem(CallItem contact) throws SQLException {
    OrmLiteSqliteOpenHelper dbHelper=DatabaseHandler.getInstance(_context);
    dbHelper.getDao(CallItem.class);
    HelperFactory.GetHelper().getCallDao().createIfNotExists(contact);
}

しかし、この実装はアイテムをテーブルの先頭に追加します。私は最後までする必要があります。どうすればこれを実装できますか?

4

2 に答える 2

2

しかし、この実装はアイテムをテーブルの先頭に追加します。私は最後までする必要があります。どうすればこれを実装できますか?

SQL データベースは、特定の順序を保証するものではなく、テーブル内の以前に削除されたスペースを自由に再利用できます。ORMLite はアイテムをデータベースに挿入するだけであり、それを最初に配置することを決定しているのは SQLite です。

QueryBuilder.orderBy(...)アイテムを特定の順序で返す場合は、メソッドを使用してクエリに順序を追加する必要があります。generated-id フィールドを追加してから、必要なものが得られるように並べ替えることができます。

于 2013-10-24T15:12:16.397 に答える
1

ええ、グレイのおかげで、私はこのようにしました:

Dao<CallItem,Integer> daoSubject = db.getCallDao();
QueryBuilder<CallItem, Integer> qb = daoSubject.queryBuilder();

qb.groupBy(Constants.CALL_DATE);
PreparedQuery<CallItem> pq = qb.prepare();
contactsList = (ArrayList<CallItem>) daoSubject.query(pq);
于 2013-10-24T16:02:46.203 に答える