zoukankan      html  css  js  c++  java
  • uniDAC使用sqlite3作为 IOS APP 的数据库存在的问题

    前面有写,可以利用uniConnection的ForceCreateDatabase参数,强制建立sqlite本地数据库,

    uniConnection1.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
    当执行uniConnection1.Connect时,如果数据库文件不存在,那么uniDAC会建立一个新的数据库。
     
    完整的代码:
    LocalFile := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetCachePath)+'exam'; //数据库文件存放位置
    LocalConnection.Database := LocalFile;//设置数据库路径
    LocalConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True'; //不存在则强行建立
    LocalConnection.Connect;//联接数据库
     
    这段代码,当全新安装app时,没有问题,但如果退出app,再重进app,当执行到Connect方法时,可能会产生错误,无法访问数据库,并且,一但产生,就一直无法联接数据库了,那怕重启手机也不行。
    uniDAC使用sqlite3作为 <wbr>IOS <wbr>APP <wbr>的数据库存在的问题

    做为测试,我这样改代码:
    LocalConnection.Database := LocalFile;//设置数据库路径
    LocalConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True'; //不存在则强行建立
    LocalConnection.Connect;//联接数据库
    LocalConnection.DisConnect;//断开数据库
    LocalConnection.Connect;//重新联接数据库,这一句可能出错
     
    重新测试上面代码,情况一样:当第二次重联数据库时,如果无法联接,就一直无法联接了,那怕重启app。
     
    对于这个问题的解决方法:
    随app打包空的数据库文件,不利用uniDAC for sqlite的强建数据库功能。
    打包方法:
    1.建空的sqlite数据库
    2.利用delphi的发布功能,如下图:
    uniDAC使用sqlite3作为 <wbr>IOS <wbr>APP <wbr>的数据库存在的问题

    由于我使用的GetCachePath取得的路径,所以,文件的Remote Path为StartUpLibraryCaches
     
    问题得到解决,但还是希望官方能解决这个问题,那我就不用打包空数据库了!
     
    环境说明:
    Delphi 10.1 Berlin update 2
    XCode 8.2.1
    IOS :10.2.1(14D27)
    uniDAC:6.4.16
     
    http://blog.sina.com.cn/s/blog_44fa172f0102whps.html
  • 相关阅读:
    自适应网页设计(Responsive Web Design)(转)
    PAT 1062 最简分数(20)(代码+思路)
    PAT 1059 C语言竞赛(20)(代码+思路)
    PAT 1058 选择题(20)(代码+思路)
    PAT 1057 数零壹 (20)(代码+思路)
    PAT 1054 求平均值 (20)(代码+思路+测试用例)
    PAT 1053 住房空置率 (20)(代码+思路)
    PAT 1052 卖个萌 (20)(代码+思路)
    PAT 1048 数字加密(20)(代码+思路)
    PAT 1047 编程团体赛(代码)
  • 原文地址:https://www.cnblogs.com/findumars/p/6480132.html
Copyright © 2011-2022 走看看