从 SQLite 数据库 Android 获取最后插入的值
我正在尝试从 Android 中的 sqlite 数据库获取最后插入的 rowid。我读过很多关于它的帖子,但无法让其中一个工作。 这是我的方法:
public Cursor getLastId() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_WID}, KEY_WID + "=" + MAX(_id), null, null, null, null, null);}
我尝试过使用MAX,但我一定是用错了。还有别的办法吗?
I am trying to get the last inserted rowid from a sqlite database in Android. I have read a lot of posts about it, but can't get one to work.
This is my method:
public Cursor getLastId() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_WID}, KEY_WID + "=" + MAX(_id), null, null, null, null, null);}
I have tried with MAX, but I must be using it wrong. Is there another way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
实际上 SQLiteDatabase 类有它自己的 insert 方法,它返回新创建的行的 id。我认为这是获得新身份证的最佳方式。
您可以查看其文档此处。
我希望这有帮助。
Well actually the SQLiteDatabase class has its own insert method which returns the id of the newly created row. I think this is the best way to get the new ID.
You can check its documentation here.
I hope this helps.
用于
获取最后插入的rowid。
如果您使用
AUTOINCRMENT
关键字,则会告诉您每个表的值。
Use
to get the last inserted rowid.
If you are using
AUTOINCREMENT
keyword thenwill tell you the values for every table.
要从表中获取最后一行..
To get the last row from the table..
使用
moveToLast()
在光标
界面。来自 android .googlesource.com
简单示例:
或者您可以在插入时获取最后一行(这是 @GorgiRankovski 提到的):
此外,您还可以使用查询来执行此操作的多种方式:
从表名中选择 MAX(id)
。或者获取所有列值SELECT * FROM table_name WHERE id = (SELECT MAX(id) FROM table_name)
。PRiMARY KEY
已设置为AUTOINCRMENT
,您可以SELECT
值从最大值到最小值,并使用SELECT 将行数限制为 1 id FROM 表 ORDER BY 列 DESC LIMIT 1
(如果您想要每个值,请使用
*
而不是id
)Use
moveToLast()
inCursor
interface.From android.googlesource.com
Simple example:
Or you can get the last row when insertion(Which is @GorgiRankovski have mentioned):
Also their is a multiple ways you can do this using query:
SELECT MAX(id) FROM table_name
. or to get all columns valuesSELECT * FROM table_name WHERE id = (SELECT MAX(id) FROM table_name)
.PRiMARY KEY
have sat toAUTOINCREMENT
, you canSELECT
vaules occording to max to min and limit the rows to 1 usingSELECT id FROM table ORDER BY column DESC LIMIT 1
(If you want each and every value, use
*
instead ofid
)如果您想要插入后的last_insert_id,您可以使用它:
If you want the last_insert_id just afert a insert you can use that :
insert 方法返回刚刚插入的行的 id,如果插入过程中出现错误,则返回 -1。
db 是 SQLiteDatabase 的一个实例。
The insert method returns the id of row just inserted or -1 if there was an error during insertion.
db is an instance of your SQLiteDatabase.
试试这个:
Try this:
我用这个
I use this
在您的 DbHelper 类中,
In your DbHelper class,