我在 Android 中使用 SQLite,我想知道获取所插入行的生成 ID 的最佳方法。
我认为一个解决方案是在包含之后进行搜索,但它看起来并不是最好的方法。
原文由 Marcos Vasconcelos 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Android 中使用 SQLite,我想知道获取所插入行的生成 ID 的最佳方法。
我认为一个解决方案是在包含之后进行搜索,但它看起来并不是最好的方法。
原文由 Marcos Vasconcelos 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果使用 ContentValues :
DBHelper db =new DBHelper();// your dbHelper
ContentValues values = new ContentValues();
values.put("firstName","Ahmad");
values.put("lastName","Aghazadeh");
long insertedId= db.getSQLiteDatabase().insert("user", "", values) ;
如果查询 exec 使用 select last_insert_rowid()
String sql = "INSERT INTO [user](firstName,lastName) VALUES (\"Ahmad\",\"Aghazadeh\"); select last_insert_rowid()";
DBHelper itemType =new DBHelper();// your dbHelper
c = db.rawQuery(sql, null);
if (c.moveToFirst())
result = c.getLong(0);
如果使用房间
@Entity
class User {
@PrimaryKey(autoGenerate = true)
public int id;
//...
}
@Dao
public interface UserDao{
@Insert(onConflict = OnConflictStrategy.REPLACE)
long insert(User user);
// Insert multiple users
@Insert(onConflict = OnConflictStrategy.REPLACE)
long[] insert(User... user);
}
原文由 Ahmad Aghazadeh 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
1 回答2.4k 阅读✓ 已解决
2 回答3.8k 阅读
insert
方法返回刚刚插入的行的id
或-1
如果插入期间出现错误。其中 db 是
SQLiteDatabase
。