获取上次更新的行ID

时间:2014-03-30 14:01:16

标签: android sqlite

有没有办法获得最后更新行ID,我们可以从插入操作获得什么?

Get generated id after insert

int row_id = -1

// fx_watchlist_id is having constraint unique (fx_watchlist_id) on conflict.
// So, we are pretty sure maximum updated row will be 1
int count = database.update(TABLE_TIMESTAMP, values, "fx_watchlist_id = ?", new String[]{Long.toString(fxWatchlistId)});
if (count <= 0) {
    row_id = database.insert(TABLE_TIMESTAMP, null, values);
} else {
    // Is there a way to retrieve last updated row id, without perform select?
    row_id = ...
}

return row_id;

1 个答案:

答案 0 :(得分:1)

insert函数返回rowid,因为没有其他方法可以确定数据库自动生成的值。

更新没有这个问题; whereClause参数的值已足以查找记录。 此外,更新可能会影响多于或少于一条记录,因此不可能有一个返回值;你需要某种列表,所以你也可以使用Cursor

Cursor c = database.query(TABLE_TIMESTAMP, new String[] { "rowid" },
                          "fx_watchlist_id = " + fxWatchlistId, null,
                          null, null, null);
if (c.moveToFirst()) {
    row_id = c.getLong(0);
    database.update(TABLE_TIMESTAMP, values,
                    "rowid = " + row_id, null);
} else {
    row_id = database.insert(...);
}