AllodalstateException: не может выполнить эту операцию, потому что пул соединений был закрыт (проблема базы данных DAO)Android

Форум для тех, кто программирует под Android
Anonymous
AllodalstateException: не может выполнить эту операцию, потому что пул соединений был закрыт (проблема базы данных DAO)

Сообщение Anonymous »

Я сталкиваюсь с фатальным исключением: java.lang.illegalStateException в моем приложении Android при доступе к базе данных комнаты DAO после того, как пул соединений базы данных был закрыт. < /p>
В моей базе данных I иметь функцию приостановки для очистки базы данных. < /p>

suspend fun formatAndCleanDatabase(context: Context){
clearAllData()
close()
context.deleteDatabase("app_database")
clearDatabaseInstance()
}
< /code>
Когда я очищаю таблицы и закрывающую базу данных, поток Попробуйте получить данные после закрытия, что я хочу, как это предотвратить. < /p>
@Dao
interface UserProfileDao {
@Query("SELECT * FROM user_profile WHERE user_id = :userId")
fun getProfileFlow(userId: String): Flow
}

< /code>
Ошибка происходит после очистки базы данных. И более ранний поток, уже выдвигаемый моделью просмотра, перед очисткой базы данных - это попробовать данные из базы данных с использованием потока в методе DAO после закрытия базы данных и недействительной. Вот след у стека: < /p>
Fatal Exception: java.lang.IllegalStateException
Cannot perform this operation because the connection pool has been closed.
android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked (SQLiteConnectionPool.java:1078)

androidx.room.driver.SupportSQLiteStatement$SupportAndroidSQLiteStatement.step (SupportSQLiteStatement.android.kt:183)
com.app.database.daos.profile.UserProfileDao_Impl.getProfileFlow$lambda$2 (UserProfileDao_Impl.kt:148)


Подробнее здесь: https://stackoverflow.com/questions/794 ... ction-pool

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