- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试初始化数据库时遇到错误。我正在使用 Android Room,我想使用 RoomDatabaseBuilder 来执行回调并填充我的数据库。
我在 Activity 类中执行 getDatabase 方法,但随后我使用 dao 从数据库获取信息,应用程序崩溃了。这是我第一次接触 Android Room,也许我忘记了一些重要的事情。有谁可以帮我解决这个问题吗?
数据库类:
static RoomDatabase.Callback rdc = new RoomDatabase.Callback() {
@Override
public void onOpen(@NonNull SupportSQLiteDatabase db) {
super.onOpen(db);
Log.d(TAG, "Debug: onOpen");
//Borramos todos los sonidos de la base de datos
INSTANCE.soundsDao().deleteAllSounds(); // Instance is "private static DatabaseSounds INSTANCE;"
Activity 行崩溃来源:
db = DatabaseSounds.getDatabase(getApplicationContext());
AsyncTask task = new LoadGridAsyncTask().execute(); **
private class LoadGridAsyncTask extends AsyncTask<Void, Void, Integer> {
@Override
protected Integer doInBackground(Void... voids) {
//Extraemos el listado de sonidos y los convertimos a DTO
List<EntitySounds> listSounds = db.soundsDao().getAll(); **** THIS is the line of crash
这是错误
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:325)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.IllegalStateException: getDatabase called recursively
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:203)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.compileStatement(RoomDatabase.java:244)
at android.arch.persistence.room.SharedSQLiteStatement.createNewStatement(SharedSQLiteStatement.java:65)
at android.arch.persistence.room.SharedSQLiteStatement.getStmt(SharedSQLiteStatement.java:72)
at android.arch.persistence.room.SharedSQLiteStatement.acquire(SharedSQLiteStatement.java:87)
at com.genaut.myapp.database.dao.DaoSounds_Impl.deleteAllSounds(DaoSounds_Impl.java:140)
at com.genaut.myapp.database.DatabaseSounds$1.onOpen(DatabaseSounds.java:57)
at com.genaut.myapp.database.DatabaseSounds_Impl$1.onOpen(DatabaseSounds_Impl.java:65)
at android.arch.persistence.room.RoomOpenHelper.onOpen(RoomOpenHelper.java:111)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:149)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:266)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
at android.arch.persistence.room.RoomDatabase.query(RoomDatabase.java:233)
at com.genaut.myapp.database.dao.DaoSounds_Impl.getAll(DaoSounds_Impl.java:155)
at com.genaut.myapp.Home$LoadGridAsyncTask.doInBackground(Home.java:83)
at com.genaut.myapp.Home$LoadGridAsyncTask.doInBackground(Home.java:78)
at android.os.AsyncTask$2.call(AsyncTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
这是 Dao 方法:
@Query("SELECT * FROM entitysounds")
List<EntitySounds> getAll();
最佳答案
but then I use the dao to get info from database
这不起作用,因为房间尚未设置。要么:
在 RoomDatabase.Callback
之外执行此工作,或者
不要在 RoomDatabase.Callback
内部使用 Room,而是使用作为 onOpen() 参数提供的
和其他回调方法SupportSQLiteDatabase
关于android - 使用 Room 递归调用 getDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775527/
我的数据库有问题。当应用程序启动时,如果表不存在,它应该使用表创建数据库,但应用程序在启动后立即崩溃。当我在打开 logcat 后关闭数据库时,告诉我“我想打开一个已经关闭的对象”,而当我不关闭数据库
我的数据库有问题。当应用程序启动时,如果表不存在,它应该创建包含表的数据库,但应用程序在启动后立即崩溃。当我在打开 logcat 后关闭数据库时,告诉我“我想打开一个已经关闭的对象”,并且当我不关闭数
我的 Lotus 网络包含多个 Lotus Domino 服务器(每个组织单位都有自己的服务器)。我尝试连接到 Server_A,然后使用 getDatabase() 从 Server_B 获取 na
为了在 MongoDB 3.2 中创建数据库实例,您必须编写如下内容: new MongoClient().getDatabase("dbName"); 据官方MongoDB Java API 3.2
当我尝试初始化数据库时遇到错误。我正在使用 Android Room,我想使用 RoomDatabaseBuilder 来执行回调并填充我的数据库。 我在 Activity 类中执行 getDatab
我正在尝试在 beforePageLoad 事件上使用 JS 通过 Xpage 打开我自己的数据库。 我有这个代码: var db:NotesDatabase = session.getDatabas
我的电脑上有一个测试数据库,其中有一个下拉字段列出了我们所有的客户。我现在尝试将其重定向到服务器上包含此信息的数据库。 (我将其加载到下拉列表使用的 beforePageLoad 事件中的 sessi
我正在尝试在 android 中为我的项目实现 DBHelper,这里我是如何实现它的我想做的是,在运行时决定要为此创建哪个数据库,我实现了类抽象类SQLiteDBService扩展SQLiteOpe
Domino 版本:9.0.1 用例 我有一个主数据库(DB0.nsf),用户对其具有读者访问权限,还有 N 个数据库,当前登录的用户对其具有不同级别的访问权限(示例 DB1 - 默认用户是读者;DB
我正在使用 StackExchange.Redis nuget 包并访问 Azure Redis 缓存。在执行 GetDatabase(dbid) 时,我注意到该函数在 dbid>15 时执行并返回有
我正在尝试用代码打开 names.nsf。这段代码已经工作了一段时间,但突然间,我变得空了。知道为什么吗?我似乎没有收到任何错误,而且我不知道如何找出问题所在。 我可以在同一台机器上从 Notes 客
我们有两种不同的查询策略,我们希望在不打开冗余连接的情况下在我们的网站上结合使用。一种策略是使用企业库来拉取 Database 对象并在 Database 上执行 Execute_____(DbCom
什么时候应该调用 MongoClient.GetServer() 和 MongoServer.GetDatabase()? 之前,我在启动时创建了一个 MongoDatabase 实例,并将其用于所有
当我尝试在从 SQLiteOpenHelper 扩展的 DbHelper 类的 onCreate 方法中插入记录时,会出现此错误。 我发现了一些类似的主题,例如: Android getDatabas
我刚开始使用我的第一个应用程序,我正在尝试创建一个表格设置,其中应该包含一个输入 PIN。之后我想运行方法 getPIN() 来获取此设置的值。 问题是,我总是得到错误“递归调用 getDatabas
我正在关注本教程 http://pettergraff.blogspot.fr/2014/01/getting-started-with-orientdb.html 在第四部分,我们假设创建一个 Ja
我正在尝试将 php 与 firebase 结合使用,但是当我尝试运行代码时出现此错误。 Fatal error: Uncaught Error: Call to undefined method K
我正在使用 Android Studio 开发我的 android 应用程序。在我的应用程序中,我需要一些 db sqlite 操作。我开始使用 Sugar ORM。根据最新版本 sugar 1.3.
请帮我解决这个错误,我找不到解决方法。这是我第一次在 android studio 中使用 SQlite 数据库。我想从数据库中获取数据,所以我得到了这个错误 进程:com.raisse.guessp
在 Mongodb c# 1.8.1 中,不再有 MongoServer.GetDatabase(string databaseName, MongoCredential credential) 方法
我是一名优秀的程序员,十分优秀!