Col*_*ren 4 sqlite android nativescript
我正在开发一个使用 Sqlite 的移动应用程序,我想从手机中提取 .db 文件并在 Sqlite 的数据库浏览器中查看它。
问题来自这样一个事实,即当我运行 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");
});
}
Run Code Online (Sandbox Code Playgroud)
我想出了如何解决这个问题。在 android 9 上,使用 adb 进行拉取时必须包含 -wal 和 -shm 文件。然后当 .db 文件打开时,您将看到您构建的数据库,而不是一个空的骨架 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |