Android 获取刚刚插入的行

Android 获取刚刚插入的行,android,sqlite,Android,Sqlite,我想获取刚刚插入的行的id 目前,我正在使用以下代码: public long createEntryApp(String str_manid, String str_jobid, String str_engid, String str_app_type, String str_appliances_model, String str_appliances_serial, String str_appliances_service_interval, String str_a

我想获取刚刚插入的行的id

目前,我正在使用以下代码:

public long createEntryApp(String str_manid, String str_jobid, String str_engid, String str_app_type, 
        String str_appliances_model, String str_appliances_serial, String str_appliances_service_interval, String str_app_date)
{
    String lastRowId = "";

    // TODO Auto-generated method stub
    ContentValues cv = new ContentValues();

    //inserting values in columns
    cv.put(KEY_APPLIANCES_MODEL, str_appliances_model);
    cv.put(KEY_MANUFACTURERROWID, str_manid);
    cv.put(KEY_APPLIANCES_TYPE, str_app_type);
    cv.put(KEY_JOBADDRESSFK, str_jobid);
    cv.put(KEY_APPLIANCES_SERIAL, str_appliances_serial);
    cv.put(KEY_APPLIANCES_SERVICE_INTERVAL, str_appliances_service_interval);
    cv.put(KEY_APPLIANCES_DATE, getDateTime());

    // getting the row id that has just been inserted

    String query = "SELECT KEY_APPLIANCES_ROWID from TBL_APPLIANCES order by KEY_APPLIANCES_ROWID DESC limit 1"; 
    Cursor c = ourDatabase.rawQuery(query, null);   // error is here
    if (c != null && c.moveToFirst()) {
        long lastId = c.getLong(0);
        lastRowId= String.valueOf(lastId);
    }
        Log.d("check last Row id", lastRowId); //checking if it's retrieved

    return ourDatabase.insert(TBL_APPLIANCES, null, cv);
}
其中,
KEY\u APPLIANCES\u ROWID
=ROWID列及其
自动递增的
TBL\u设备
=表名 错误显示:没有像
TBL\u APPLIANCES
这样的表,但它在我的数据库中。
请提前帮助和感谢:)

TBL\u设备
(和
键*
)是Java代码中的变量名,它们的值包含SQL标识符

因此,更换

"SELECT KEY_APPLIANCES_ROWID from TBL_APPLIANCES order by KEY_APPLIANCES_ROWID DESC limit 1"; 
有点像

"SELECT " + KEY_APPLIANCES_ROWID + " from " + TBL_APPLIANCES + " order by " + KEY_APPLIANCES_ROWID + " DESC limit 1";
另一方面,您在插入任何内容之前执行查询,因此它不会返回您想要的内容


此外,查询刚刚插入的值有点多余。你已经认识他们了
insert()
返回生成的rowid。

如果使用

db.insert()
而不是
db.rawQuery()

从:

退换商品
  • 新插入行的行ID,如果发生错误,则为-1
    没关系,只是看看而已。下面的答案是我的第二个猜测。对于无用的评论,很抱歉。感谢您指出这一点,但是,我正在使用
    ourDatabase.insert插入(TBL_APPLIANCES,null,cv)
    where
    database
    is
    db
    感谢您的回复伙伴,现在只需测试一下,当我删除
    DESC limit 1
    并显示添加的行数(不是最新的行id)时,它就会起作用。此外,当我在不删除
    DESC limit 1
    的情况下执行时,它会说
    没有这样的列:appliances\u idDESC
    是的,当然你需要在列名和
    DESC
    之间留一个空格。谢谢你,非常感谢。您能告诉我一个关于如何掌握上述查询语法的教程吗?谢谢您回复SMR,我使用了
    db.rawQuery()
    ,因为我不知道如何使用
    db.insert()
    。请建议我一个教程,这样我也可以学习不同的方法。当然这将是非常有用的。Thanks@user3807650干杯你可以随时投票或接受,而不是说thanx:P