Android 上的 Godot SQLite 数据库导出

问题描述 投票:0回答:2

我将项目导出到 Android 时遇到问题。

我的

res://

中有以下文件和文件夹
res://addons/godot-sqlite/
res://dataStore/database.db
res://dataStore/database.sqbpro
res://globalenv/globalfunctions.gd
res://globalenv/globalvar.gd
res://scenes/

我在 Android 导出中导出本地数据库时遇到一些问题,例如,我的代码中有以下变量:

const SQLite = preload("res://addons/godot-sqlite/bin/gdsqlite.gdns")
var db # database object
var db_name = "res://dataStore/database.db" # database path

我已将database.db的路径更改为

var db_name = "user://database.db"

然后我将database.db复制到我的

C:\Users\Username\AppData\Roaming\Godot\app_userdata\project-name

在 Godot“播放项目”按钮中,数据库工作正常,但是当我将项目导出到 Android 并将

database.db
添加到资源中的非资源过滤器并且安装了
.apk
时,登录无法正常工作。

过滤导出非资源文件

有什么想法吗?

谢谢大家!

android sqlite android-sqlite godot gdscript
2个回答
0
投票

使用通配符添加导出,例如

*.db
有一个问题 - 我相信这个问题仍然存在 - 如果没有通配符,此选项将不起作用。

这应该使

*.db
文件在其
res://
路径中可用。这是只读的。

由于只读对数据库不利,因此将其复制到

user://
路径。您可以使用
Directory
类的对象来检查它是否已存在,如果不存在,则从
res://
复制到
user://

然后继续从

user://
路径处理数据库。


0
投票

我发现将数据库复制到用户目录中的唯一方法(godot 4.3)

var db_file_content : PackedByteArray  = FileAccess.get_file_as_bytes("res://data/data.db")
var file : FileAccess = FileAccess.open("user://data.db",FileAccess.WRITE)
file.store_buffer(db_file_content)
file.close()
© www.soinside.com 2019 - 2024. All rights reserved.