gpt4 book ai didi

android - 从android中提取Sqlite数据库会产生空数据库

转载 作者:行者123 更新时间:2023-12-03 20:15:35 24 4
gpt4 key购买 nike

我正在开发一个使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com