Почему функции из моего репозитория не могут получить доступ к данным из базы данных моих комнат?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему функции из моего репозитория не могут получить доступ к данным из базы данных моих комнат?

Сообщение Anonymous »

Я создал базу данных номеров в своем приложении и могу добавлять в нее данные с помощью написанных мной функций, но не могу их получить. Моя цель — просто сохранить имена пользователей и адреса электронной почты и получить их, когда они будут изменены, чтобы я мог отобразить изменения в своем пользовательском интерфейсе. Проблема в том, что мои функции не извлекают информацию, а просто возвращают значение по умолчанию, например нулевые или пустые строки.
Вот моя сущность:

Код: Выделить всё

@Entity
data class Info(
val email: String,
val userName: String,
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
)
Вот мое дао:

Код: Выделить всё

interface InfoDao {
@Upsert
suspend fun upsertInfo(info: Info)

@Delete
suspend fun deleteInfo(info: Info)

@Query("SELECT userName FROM info LIMIT 1")
fun getUsernameAsLiveData(): LiveData

@Query("SELECT email FROM info LIMIT 1")
fun getEmailAsLiveData(): LiveData
}
Мой репозиторий:

Код: Выделить всё

class Repo(
private val db: InfoDatabase,
) {
fun openDatabase() {
db.openHelper.writableDatabase
}

suspend fun upsertInfo(info: Info) {
db.dao.upsertInfo(info)
}

suspend fun deleteInfo(info: Info) {
db.dao.deleteInfo(info)
}

fun getUsername(): LiveData {
val usernameLiveData = db.dao.getUsernameAsLiveData()
return usernameLiveData
}

fun getEmail(): LiveData = db.dao.getEmailAsLiveData()
}
Моя модель представления:

Код: Выделить всё

class RoomViewModel(
private val repo: Repo,
) : ViewModel() {
private val _isOpen = MutableStateFlow(false)
val isOpen: StateFlow = _isOpen

private val _usernameState = MutableLiveData()
val usernameState: LiveData = _usernameState

private val _emailState = MutableLiveData()
val emailState: LiveData = _emailState

fun openDatabase() {
viewModelScope.launch {
repo.openDatabase()
_isOpen.value = true
}
}

suspend fun fetchData() {
viewModelScope.launch {
if (!isOpen.value) {
repo.openDatabase()
}

val username = repo.getUsername().value
_usernameState.value = username

val email = repo.getEmail().value
_emailState.value = email
}
}

suspend fun upsertInfo(info: Info) {
viewModelScope.launch {
repo.upsertInfo(info)
}
}
}
И мой составной:

Код: Выделить всё

@Composable
fun DeviceScreen(
navController: NavHostController,
lifecycleOwner: LifecycleOwner,
roomViewModel: RoomViewModel,
) {
val username by roomViewModel.usernameState.observeAsState()
val email by roomViewModel.emailState.observeAsState()

LaunchedEffect(Unit) {
roomViewModel.openDatabase() // before this my roomDatabase was closed
}

LaunchedEffect(roomViewModel.isOpen) {
roomViewModel.fetchData()
}
}
Я ожидал увидеть в своем logcat обычные электронные письма и имена пользователей, возможно, список, который я мог бы использовать, но все, что я получил, это нулевые или пустые строки. Я повсюду разместил операторы журнала, чтобы попытаться точно определить проблему. Сначала я подумал, что это произошло из-за того, что моя база данных была закрыта в инспекторе баз данных, но я решил эту проблему, и теперь она открыта. Я вижу фиктивное имя пользователя и созданные мной электронные письма, но по-прежнему не могу получить к ним доступ. Я пробовал конвертировать в потоки или простые строки, но это не сработало. У меня закончились идеи.

Подробнее здесь: https://stackoverflow.com/questions/786 ... y-room-dat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как хранить файлы базы данных комнат в проекте Android Studio?
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Синхронизация обновлений базы данных комнат между фрагментами в Android
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Удален элемент из базы данных комнат, перезагрузка после перезапуска приложения.
    Anonymous » » в форуме Android
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Предварительное заполнение базы данных комнат с помощью Hilt
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Предварительное заполнение базы данных комнат с помощью Hilt
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»