我正在开发一个使用Sqlite的移动应用程序,我想从手机中提取.db文件并在Sqlite的DB Browser中查看它。
问题来自以下事实:即使我已经创建了表并将数据添加到数据库中的那些表中,当我运行adb命令时,得到的.db文件也为空。
在应用程序中,我向数据库查询插入的记录,然后将它们返回。有什么想法吗?
adb命令:adb exec-out run-as projectname cat databases/my.db > my.db
数据库创建代码:
if(!Sqlite.exists("my.db")){
new Sqlite("my.db")
.then(
(db) => {
//create table here
db.execSQL("CREATE TABLE IF NOT EXISTS Times (Id INTEGER PRIMARY KEY AUTOINCREMENT, clockIn TEXT, clockOut TEXT)")
.then(
() => {
console.log("succcess")
db.execSQL("INSERT INTO Times (clockIn, clockOut) VALUES (?, ?)", ["Nic", "Raboy"]).then(() => {
db.all("SELECT * FROM Times").then((rows) => {
console.log(rows)
})
})
},
(error) => {
console.log('Error occurred creating table');
});
},
(error) => {
console.log("Error creating Database");
});
}
答案 0 :(得分:1)
我想出了解决这个问题的方法。在android 9上,使用adb提取时必须包含-wal和-shm文件。然后,在打开.db文件时,您将看到构建时的数据库,而不是空的骨架db。
这可能不是最好的方法,但它会起作用:
message(1)
答案 1 :(得分:0)
您必须使用appDatabase.close()
才能使用它。
在活动onStop()
中关闭数据库后,从Android Studio中的Android设备文件资源管理器中提取数据库文件,然后使用任何Broswer sqlite查看器查看其中的表。