在android中使用room for database.当我试图在sqlviewer中查看数据时,在数据库文件Myapp.db文件中找不到表是空的.数据/数据/包/数据库/ Myapp.db
我已经下载了 Genymotion Android 模拟器供个人使用。我在互联网上搜索了这个设备,论坛说通过 adb shell 它已经扎根 - “同意”。
Sumits-MacBook-Pro:sdk eSumit$ adb -s 192.168.57.102:5555 shell
root@vbox86p:/ #
root@vbox86p:/ # whoami
root
Run Code Online (Sandbox Code Playgroud)
发现 Genymotion 配置 apk,它将有助于 root 访问,如果复选框被点击 - “始终允许 su 访问”,我也这样做了,然后它像这里一样卡住了。(见下文)
如果我自己重新启动,它显示没有root访问权限?
我可以知道我在这里缺少什么吗?
以下是图片序列:
我还学习了各种教程,例如Youtube - how to root genymotion emulator Android 7.0 但还没有解决方案
我在我的示例应用程序中使用 RoomDB。我能够对 DB 执行 CRUD 操作。但我无法查看 db 文件。我想在 sqlite DB 浏览器中查看表结构。
这是我的APPDatabase类
@Database(entities = {User.class}, version = 1,exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract UserDao userDao();
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "user-database")
.allowMainThreadQueries()
.build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
Run Code Online (Sandbox Code Playgroud)
帮我获取数据库文件。
我在我的应用程序中使用 RoomDB。能够执行 crud 操作。其实我想看看db文件。
getDatabasePath("user.db").getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我db文件所在的目录,保存目录是这样的
/data/data/com.example.manvish.roomdb/databases/user.db
Run Code Online (Sandbox Code Playgroud)
但即使在命令提示符下使用 sudo ,我仍然无法访问数据目录。现在我想将 DB 文件位置更改为内部存储器或 SD 卡中的其他一些文件夹。我怎样才能做到这一点?
我正在研究Rxjava2,并且正在尝试将Room Library与Rxjava2集成。问题是:我有一个填充的表,每次登录该应用程序时,都需要删除该表,然后在数据库中插入新内容。另外,在删除和插入工作正常,但是当我尝试我删除该表的内容后插入新值,删除方法删除所有的新的价值观。(代码的某些部分是在科特林和其他JAVA)
我已经尝试了以下方法:RxJava2 + Room:在clearAllTables()调用之后没有将数据插入DB中,但是没有成功。
道
@Dao
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(list:List<Something>)
@Query("DELETE FROM SomethingTable")
fun delete()
@Query("SELECT * FROM SomethingTable")
fun getAll(): Flowable<List<Something>>
Run Code Online (Sandbox Code Playgroud)
我的班级叫DAO(CallDao)
//insert
fun insertInDB(list: List<Something>) {
Completable.fromAction {
dbDAO!!.insert(list)
}.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe()
}
//delete
fun clean() {
Completable.fromAction {
dbDAO!!.delete()
}.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.single())
.subscribe()
}
//search all
fun findAll(): Observable<List<Something>>? {
return Observable.create { subscriber ->
dbDAO!!.getAll()
.subscribeOn(Schedulers.io())
.subscribe {it->
subscriber.onNext(it)
}
}
}
Run Code Online (Sandbox Code Playgroud)
单击登录按钮时调用的方法
private void clearAndInsertInDB() {
CallDao callDao= new CallDao(getActivity());
//delete all …Run Code Online (Sandbox Code Playgroud)