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