DELPHI 安卓开发SQLite的使用问题

changfenglee 2020-07-13 03:47:44
各位老大:

小弟又来求救了,还是关于安卓开发的问题。

问题描述:我按照网上的方法进行SQLite的操作,使用真机调试,但APP闪退不能使用,DELPHI软件我已经试过了XE8,XE10.1柏林版,现在使用的是XE10.4,以下是截图

1.在设计阶段已经按照网上帖子的教程进行了各种设计,数据也可以显示出来没有问题



2.创建的SQLite数据库文件也加入到了列表中



3.代码部分也按照要求加入



4.SDK的环境配置应该没有问题



我已经仔细检查了各种步骤,完全按照要求执行,但编译安装到手机上后,直接闪退,之前用XE8版本倒是可以打开,但完全没有用,我不太清楚是SQLite还需设置什么,还是安卓上要设置什么东东,之前没做过安卓开发,属菜鸟级别,还请各位大佬指点指点啊

...全文
371 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
changfenglee 2020-07-14
  • 打赏
  • 举报
回复
问题解决了,下面说明一下原因供大家参考

1.首先找不到数据库是真正的设置问题

2.后面别的手机可以正常使用,而华为手机不可以,其实不是华为手机有问题,而是在设计的时候数据库文件有变化,但是编译更新的时候,没有编写数据库更新的代码,所以更新以后,找不到更新后生成的数据表,一直报错,把手机上的APP卸载再更新安装后,问题解决了,其它手机之所以可以正常使用,是因为之前没有安装这个APP,全新安装的话,数据库也是最新的,不存在更新问题

所以APP的更新涉及数据库更新的话,一定要写数据库更新的代码,虽然把APP卸载也可以实现,但用户保存的数据将会丢失

再次感谢大家的帮忙。
tanqth 2020-07-13
  • 打赏
  • 举报
回复
然后在新创建的数据库文件里增加你的表。表名尽可能加上前缀,如: t_xxx, t_yyy
tanqth 2020-07-13
  • 打赏
  • 举报
回复
你创建一个低版本的数据库文件再试试。或者,如果你是空的数据内容,是可以由FDAC自动创建一个数据文件的。
changfenglee 2020-07-13
  • 打赏
  • 举报
回复
我也试了一下,我自己的手机不行,拿别人的手机可以,我的是华为,朋友的是红米

我的手机:


朋友的手机:
tanqth 2020-07-13
  • 打赏
  • 举报
回复
我之前好像还遇到过一种情况,也是朋友的数据库连接不上,但换成我自己生成的数据库文件就可以。好像是数据库版本问题。这个我不太确定了。也是可以偿试一下的解决方向。
tanqth 2020-07-13
  • 打赏
  • 举报
回复
手机不同,反应出来的路径可能是不同的,所以需要使用GetDocumentsPath。提示是没有这个表。 你编译完成后在编译路径下找到apk文件 ,改名为zip用解压软件打开看看数据库文件是否已正确打包。 其次,安装前,先卸载一次已安装过的APP。 从你目前的代码与配置看,应该是正确的。
changfenglee 2020-07-13
  • 打赏
  • 举报
回复
动态更新:

我验证了一下路径问题

procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
fdconnection1.Params.Values['Database']:= tpath.GetDocumentsPath + PathDelim + '123.db';
end;

以上这个语句,在我的手机上测试指向的路径为:

/data/user/0/com.embarcadero.Project1/files/123.db

但在网上搜索的结果显示,文件发布设置assets\internal\所指向的路径为:/data/data/.../files

这两个路径对比好像少了一个/data

不知道这个有没有影响,请问我如何才能查询assets\internal\的路径到底指向哪里呢?
changfenglee 2020-07-13
  • 打赏
  • 举报
回复
最新动态:

闪退的原因找到了,主要还是数据库找不到的问题,而我把数据库连接设为静态模式,因此软件启动就调用连接,又找不到数据库,出现闪退问题。

那么新问题来了,数据库为何会连接不上?

已经在发布那里设置的远程目录:assets\internal\

连接之前也设置了新的数据连接地址:
procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
fdconnection1.Params.Values['Database']:= tpath.Combine(tpath.GetDocumentsPath,'123.db');
end;

但还是找不到数据库在哪


问题出在哪呢?

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧