插入后获取生成的 ID

2022-08-31 07:49:42

我正在将SQLite与Android一起使用,我想知道获取我插入的行的生成id的最佳方法。

我认为一个解决方案使搜索后包含,但它看起来不是最好的方式。


答案 1

insert 方法返回刚刚插入的行,或者插入过程中是否出错。id-1

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

其中 db 是 。SQLiteDatabase


答案 2

如果使用内容值 :

 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) ;

如果查询执行器使用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);
}

推荐