有没有办法在 Room 中使用 SQLiteDatabase?
Is there a way to use SQLiteDatabase with Room?
我需要能够执行一些使用 SQLiteDatabase
可以轻松完成的操作,但我正在使用 Room
。有没有办法为 Room
数据库获取 SQLiteDatabase
对象的实例?我已经尝试过 RoomDatabase
对象,但与 SQLiteDatabase
.
相比,可用的操作非常有限
RoomDatabase
有 getOpenHelper()
, which returns a SupportSQLiteOpenHelper
. As with SQLiteOpenHelper
, SupportSQLiteOpenHelper
offers getReadableDatabase()
and getWritebleDatabase()
methods. Those return a SupportSQLiteDatabase
.
SupportSQLiteDatabase
与 SQLiteDatabase
不完全相同,但很接近,并且它受更多 SQLite 实现的支持,而不仅仅是框架 SQLite。
是的,您可以轻松获得 SQLite 数据库,但不能通过 Room。
例如假设传递给 databaseBuilder 的数据库名称在 TheDatabase class 中定义为常量 DATABASE_NAME 那么您就可以使用了。此外,a_context
是上下文 (例如,通过在 activity 中使用 this
)
SQLiteDatabase sqlitedb = SQLiteDatabase.openDatabase(a_context.getDatabasePath(TheDatabase.DATABASE_NAME).getPath(), null, SQLiteDatabase.OPEN_READWRITE);
显然,您需要小心使用 Room 和上面的(可能确保每个在另一个打开之前发出关闭)。
我需要能够执行一些使用 SQLiteDatabase
可以轻松完成的操作,但我正在使用 Room
。有没有办法为 Room
数据库获取 SQLiteDatabase
对象的实例?我已经尝试过 RoomDatabase
对象,但与 SQLiteDatabase
.
RoomDatabase
有 getOpenHelper()
, which returns a SupportSQLiteOpenHelper
. As with SQLiteOpenHelper
, SupportSQLiteOpenHelper
offers getReadableDatabase()
and getWritebleDatabase()
methods. Those return a SupportSQLiteDatabase
.
SupportSQLiteDatabase
与 SQLiteDatabase
不完全相同,但很接近,并且它受更多 SQLite 实现的支持,而不仅仅是框架 SQLite。
是的,您可以轻松获得 SQLite 数据库,但不能通过 Room。
例如假设传递给 databaseBuilder 的数据库名称在 TheDatabase class 中定义为常量 DATABASE_NAME 那么您就可以使用了。此外,a_context
是上下文 (例如,通过在 activity 中使用 this
)
SQLiteDatabase sqlitedb = SQLiteDatabase.openDatabase(a_context.getDatabasePath(TheDatabase.DATABASE_NAME).getPath(), null, SQLiteDatabase.OPEN_READWRITE);
显然,您需要小心使用 Room 和上面的(可能确保每个在另一个打开之前发出关闭)。