如何在 Android Studio 中从数据类获取数据

How to get data from data class in Android Studio

提问人:terdev 提问时间:9/20/2020 最后编辑:Vadim Kotovterdev 更新时间:9/24/2020 访问量:646

问:

我对 AS 比较陌生,想使用我的本地数据库的 Room 实现登录系统。 以下查询采用 name 和 password 的值,并检查数据库中是否存在此用户。

@Query("SELECT userName, password FROM users_data WHERE userName LIKE :name_input AND password LIKE :pw_input")
fun findUser(name_input : String, pw_input : String): List<LogIn>

数据应返回给 LogIn() POJO:

package com.example.app.data

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey


@Entity(tableName = "users_data")
data class user(
  @PrimaryKey(autoGenerate = true)
  val id : Int, val mail : String, val userName : String, val password : String)

data class LogIn(
  @ColumnInfo(name = "userName") val userName: String,
  @ColumnInfo(name = "password") val password: String
)

为了确定输入的用户是否存在,我想检查 LogIn() 的数据并使用它。 不幸的是,我还不知道一种有效的方法。

android sqlite kotlin android-room

评论


答:

0赞 Muhammad Nasir Aziz 9/21/2020 #1

我认为您要做的是从user_table返回用户数据 但是您正在做的是从错误的表返回数据 尝试不返回(并在必要时进行重构)List<user>List<Login>

评论

0赞 terdev 9/22/2020
嗨,@Muhammad纳西尔·阿齐兹,感谢您的回复。用户数据在用户数据类中是安全的,但我创建了 LogIn 数据类,因为我只需要登录过程的用户名和密码。尽管如此,请从上面查询中的“user_table”返回数据。您能否具体说明您的意思和“尝试返回列表而不是列表”?多谢!
0赞 Muhammad Nasir Aziz 9/24/2020
非常抱歉错别字,我已经编辑了答案,对不起。以及如何从登录屏幕中获取数据并检查输入的数据是否与SQL查询数据库中的数据匹配if exists
0赞 terdev 9/24/2020
现在我得到了你,谢谢你的回复。我有 3 个问题指定给您的答案。由于我只想要用户名和密码,所以我实际上不需要用户类,不是吗?LogIn 类也存在于 users_data 实体中,因此能够在数据库中搜索,还是我错了?此外,我认为在将 Room 用于本地数据库时,无法进行“if exist”调用。我真的不知道如何以最好的方式处理这个问题。感谢您抽出时间接受采访。
0赞 Muhammad Nasir Aziz 9/25/2020
嗯,是的,您可以使用具有 LogIn 类的users_data在数据库中进行搜索。是的,如果本地数据库中存在,您可以使用它,当我想检查用户数据库中是否存在电影并相应地更新 UI 时,我已经使用了它。好吧,我也是 Android 的新手,但这种事情我已经做过几次了,所以我觉得我可以提供帮助。希望它在某种程度上。