有没有办法获得最后更新行ID,我们可以从插入操作获得什么?
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;
答案 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(...);
}