【问题标题】:Most recent added record into database最近添加到数据库中的记录
【发布时间】:2016-03-16 07:08:26
【问题描述】:

我应该如何从数据库中获取最近添加的记录,其中 COL_2 应该 == 我传递给它的参数。 我可以使用此代码获取 COL_2 等于 param 的所有记录,但我只需要最近的记录

    public Cursor getRowsLast(String param) {
    SQLiteDatabase db = helper.getWritableDatabase();
    String[] COLS = new String[]{DatabaseHelper.COL_1,DatabaseHelper.COL_2, DatabaseHelper.COL_3,DatabaseHelper.COL_4};
    String where = param;
    Cursor c = db.query(true, DatabaseHelper.TABLE_NAME, COLS, DatabaseHelper.COL_2 + " = '" + where + "'", null, null, null, null, null);
    if(c != null){
        c.moveToFirst();
    }
    return c;
}

【问题讨论】:

标签: android database sqlite


【解决方案1】:

获取表中最新行的最可靠方法是在表中为插入/更新时间定义一列。确保此值在插入/更新时准确,并在其上创建索引。然后,您可以对该列进行排序(降序)以确定哪一个是最新的 - 它将是第一行。

【讨论】:

    【解决方案2】:

    随着自动生成的 ID 值随着每次插入而增加,具有最高 ID 的行将是最近插入的行。所以添加一个'order by _id desc',第一行将是最近插入的。

    注意 - 这不包括更新。如果您需要最近插入或更新的行,则必须像 Doug Stevenson 建议的那样使用额外的时间戳列。

    【讨论】:

    • 我可能说得不好。我只需要第 2 列 == 参数的所有行中 ID 为最高数字的行。
    • 解决方法还是一样。您的 where 条件在应用“order by”之前过滤行。我的建议仍然会为您提供与您的 where 条件匹配的最近插入的行。
    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多