lsqlite3使用过程中的问题

我用lsqlite3读取数据,在windows模拟器上成功,但是移植到android上面时出现assert()failed,不明白为什么,求指教?代码和报错如图

在这之前调用了db = sqlite3.open(dburl),db路径肯定是没错的,否则早就报错了,难道是SQLite3.open返回值错误?但是在模拟器上返回值是正确的,难道android读取数据库文件需要别的权限?
求高手解答

数据库是预置的吧?预置的文件在Android上实际是打在包里的,都是只读的,所以作为数据库打开肯定是不行的。你需要将数据库文件复制到可写目录下使用,或者在可写目录下新建一个。

感谢你的帮助,
那么我在需要第一次启动程序的时候创建数据库?但是看别的程序使用也没有这样做啊?还是我可以开通某项权限去执行这个操作?
如果上面方法不行的话,如何去更改数据库目录,或者如何去复制并且找对正确路径,希望能给与帮助

你可以在第一次启动的时候把数据库文件拷贝到其他可写的目录下。,以后就操作这个可写目录下的数据库。

apk包里的文件都是只读的,所以肯定做不了数据库操作,开什么权限都没有用。
如4楼所说,只要第一次启动时将文件复制到device.writablePath目录下再使用就可以了。

PS:IOS 上也是同理的。

了解了,谢谢大伙

从网上找了几个方法,都是按照你说的在安卓下新建路径或者复制到别的路径,我Java基本不会,感觉操作起来并不容易,现在有个这样的想法,将apk直接安装在外置存储上,不知道这样是否能直接操纵数据了?

这种复制lua如何实现呢?关键是我如何在代码中去更改默认路径呢?

APK安装在哪里都没用的啊

在lua里用接口读出文件数据,重新写到可写目录下再用啊。代码里直接指向可写目录就行了。