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
  • 相关阅读:
    HAProxy的基础配置详解
    Nginx七层负载均衡的几种调度算法
    基于PXE网络启动的Linux系统自动化安装
    centos源码编译安装新版本内核
    Linux计划任务管理
    Linux多网卡绑定(bond)及网络组(team)
    Linux逻辑卷管理(LVM)
    pandas基础操作
    subprocess
    python常用库(转)
  • 原文地址:https://www.cnblogs.com/findumars/p/6480132.html
Copyright © 2011-2022 走看看