Android 如何获取我刚刚添加到数据库中的最新对象的id?
我创建了一个数据库,它保存名称、信息,并为每个保存到数据库中的对象提供一个“_id” 现在,我想用下一个函数在末尾获取新添加的对象正在获取的id—我已经尝试了下一个代码—但我确信这不是正确的方法Android 如何获取我刚刚添加到数据库中的最新对象的id?,android,database,Android,Database,我创建了一个数据库,它保存名称、信息,并为每个保存到数据库中的对象提供一个“_id” 现在,我想用下一个函数在末尾获取新添加的对象正在获取的id—我已经尝试了下一个代码—但我确信这不是正确的方法 public long insertAuto(Student student){ SQLiteDatabase db = dbOpen.getWritableDatabase(); ContentValues vals = new ContentValues();
public long insertAuto(Student student){
SQLiteDatabase db = dbOpen.getWritableDatabase();
ContentValues vals = new ContentValues();
vals.put(Constants.STUDENT_NAME, student.getName());
vals.put(Constants.STUDENT_INFO, movie.getInfo());
db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
//this is where i thinks is my mistake!
long id = student.getId();
db.close();
return id;
}
因此,感谢您提供的任何帮助使用
SQLiteDatabase.insert()
方法的返回值
作为状态,此方法返回
使用
SQLiteDatabase.insert()方法的返回值
作为状态,此方法返回
您可以尝试以下方法:
String query = "SELECT ROWID from TABLE_NAME_STUDENTS order by ROWID DESC limit 1";
Cursor c = db.rawQuery(query);
if (c != null ) {
c.moveToFirst();
id = c.getLong(0);
}
您可以尝试以下方法:
String query = "SELECT ROWID from TABLE_NAME_STUDENTS order by ROWID DESC limit 1";
Cursor c = db.rawQuery(query);
if (c != null ) {
c.moveToFirst();
id = c.getLong(0);
}
检查以下文件:
它为您返回新插入的rowId
public long insertAuto(Student student){
SQLiteDatabase db = dbOpen.getWritableDatabase();
ContentValues vals = new ContentValues();
vals.put(Constants.STUDENT_NAME, student.getName());
vals.put(Constants.STUDENT_INFO, movie.getInfo());
long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
db.close();
return id;
}
检查以下文件:
它为您返回新插入的rowId
public long insertAuto(Student student){
SQLiteDatabase db = dbOpen.getWritableDatabase();
ContentValues vals = new ContentValues();
vals.put(Constants.STUDENT_NAME, student.getName());
vals.put(Constants.STUDENT_INFO, movie.getInfo());
long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
db.close();
return id;
}
1/如果您自己在应用程序中生成id,那么您所做的是正确的
lastId = theLastSavedStudentObject.get(id);
2/看看你的代码,似乎你让数据库自动生成id(可能是MySQL自动增量),那么最后一个id必须从数据库中选择,或者通过插入函数返回
lastSaveId = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
或使用以下SQL查询直接从数据库进行查询:
select max(id) from mytable; (for autoincrement ID)
1/如果您自己在应用程序中生成id,那么您所做的是正确的
lastId = theLastSavedStudentObject.get(id);
2/看看你的代码,似乎你让数据库自动生成id(可能是MySQL自动增量),那么最后一个id必须从数据库中选择,或者通过插入函数返回
lastSaveId = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
或使用以下SQL查询直接从数据库进行查询:
select max(id) from mytable; (for autoincrement ID)
无论何时在数据库上运行插入查询,它都会将当前插入行的行id作为long值返回
long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
return id;
此行id将是唯一的,可用于进一步的查询。无论何时在数据库上运行插入查询,它都会将当前插入行的行id作为长值返回
long id = db.insert(Constants.TABLE_NAME_STUDENTS, null, vals);
return id;
该行id将是唯一的,可用于进一步的查询。我认为这个问题已经存在。我想这个问题已经存在了。检查:您的意思是我应该使用'db.insert(Constants.TABLE_NAME_STUDENTS,null,vals);'作为id的返回值?我更新了答案,希望现在答案清楚:)你的意思是我应该使用“db.insert(Constants.TABLE_NAME_STUDENTS,null,vals);”作为id的返回值?我更新了我的答案,希望它现在清楚:)