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(...)方法将顺序添加到您的查询中。您可以添加一个生成的 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 回答