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

标签 android sqlite nativescript

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

相关文章:

python - 使用 SQLAlchemy 在 sqlite db 中创建有序索引

SSIS 和 SQLite

ios - Nativescript-vue原生iOS导航按钮在ActionBar上设置标题后消失

android - Firebase 身份验证 - 发生网络错误(例如超时、连接中断或主机无法访问)

java - 在异步任务上或异步任务中执行多个任务,并从 postexecute 返回数据

sql - 加入两个表并正确分组结果

post - Nativescript 图像转换为 Base64,然后获取 POST

javascript - 在 NativeScript 中从 cocoapods 调用方法

android - 无法使用 BitmapFactory.decodeStream() 从 Url 加载图像

android - BLE 设备名称无法恢复