我正在开发一个使用 Sqlite 的移动应用程序,我想从手机中提取 .db 文件并在 DB Browser for Sqlite 中查看它。
问题来自这样一个事实,即当我运行 adb 命令时,我得到的 .db 文件是空的,即使我已经创建了表并将数据添加到数据库中的这些表中。
在应用程序中,我在数据库中查询插入的记录并返回它们。有什么想法吗?
亚行命令: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");
});
}
最佳答案
我想出了如何解决这个问题。在 android 9 上,使用 adb 拉取时必须包含 -wal 和 -shm 文件。然后,当打开 .db 文件时,您将看到已构建的数据库,而不是空的骨架数据库。
这可能不是最好的方法,但它会起作用:
adb exec-out run-as projectname cat databases/my.db > my.db
adb exec-out run-as projectname cat databases/my.db-shm > my.db-shm
adb exec-out run-as projectname cat databases/my.db-wal > my.db-wal
关于android - 从android中提取Sqlite数据库会产生空数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56082256/