插入后获取生成的id

新手上路,请多包涵

我在 Android 中使用 SQLite,我想知道获取所插入行的生成 ID 的最佳方法。

我认为一个解决方案是在包含之后进行搜索,但它看起来并不是最好的方法。

原文由 Marcos Vasconcelos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 516
2 个回答

insert 方法返回刚刚插入的行的 id-1 如果插入期间出现错误。

 long id = db.insert(...);

其中 db 是 SQLiteDatabase

原文由 GrAnd 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题