我想获取刚刚插入的行的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_APPLIANCES_ROWID
= rowId列及其AUTOINCREMENTED
TBL_APPLIANCES
=表名
错误说:没有TBL_APPLIANCES
这样的表,但它在我的数据库中。
请提前帮助并表示感谢:)
答案 0 :(得分:0)
TBL_APPLIANCES
(和KEY_*
)是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。
答案 1 :(得分:0)