Android Studio 会议室数据库:如何在插入后得到值

v8wbuo2f  于 2022-11-16  发布在  Android
关注(0)|答案(1)|浏览(140)

这是我的on click函数,当用户点击SIGN UP时,我想在我的数据库中创建User & Cart,问题是在我将用户插入到我的数据库中后,我如何才能获得用户ID,因为我必须让它为User创建Cart
第一个
我尽力了

fun addUser(user: User) {
    viewModelScope.launch(Dispatchers.IO) {
        roomUserRepository.addUser(user)
        checkUser(user.email)
    }
}

fun getUser(email: String) {
    viewModelScope.launch(Dispatchers.IO) {
        val foundUser = roomUserRepository.getUser(email)
        if(foundUser != null){
             _user.value = foundUser
        }
    }
}

问题是以前保存的值 则更新该值
购物车表
[cartID(自动生成),用户ID]
[1,0(默认值)]应为1userID
[2,1(上一个用户ID)]它应该是2userID
[3,2(上一个用户ID)]它应该是3userID
因此,当我单击SIGN UP时,它首先基于旧值添加,然后更新
用户道

@Entity(tableName = "user_table")
data class User(
    @PrimaryKey(autoGenerate = true)
    var userID: Int = 0,
    var fullName: String = "Missing",
    var email: String = "Missing",
    var password: String = "Missing",
    var phone: Long = -1,
    var profileImage: String = "Missing",
    var userType: Int = -1,
) {

    constructor(
        userID: Int
    ) : this(
        userID,
        fullName = "Missing",
        email = "Missing",
        password = "Missing",
        phone = -1,
        profileImage = "Missing",
        userType = -1,
        )
}
wgx48brx

wgx48brx1#

@Insert函数可以返回Long(在单次插入中)或LongArray(用于多次插入)。如果userID是整数类型Int/Long(以及某些其他类型,如Byte),并且使用@PrimaryKey进行注解,则这将是userID的值。检索此值或重新生成显示列表的UI(因为这将提取userID)。

相关问题