前面有写,可以利用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方法时,可能会产生错误,无法访问数据库,并且,一但产生,就一直无法联接数据库了,那怕重启手机也不行。

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

由于我使用的GetCachePath取得的路径,所以,文件的Remote Path为StartUp\Library\Caches\
 
问题得到解决,但还是希望官方能解决这个问题,那我就不用打包空数据库了!
 
环境说明:
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

uniDAC使用sqlite3作为 IOS APP 的数据库存在的问题的更多相关文章

  1. CoreData(数据库升级 )版本迁移-iOS App升级安装

    版权声明:本文为博主原创文章,未经博主允许不得转载. 如果IOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库 ...

  2. iOS App的几种安全防范

    虽然公司的项目目前还不算健壮,安全问题对于大部分小公司来说似乎并没什么必要,不过要攻击的话,我有十足的把握,我们是无法承受冲击的.嘿嘿嘿~不过带着一颗入坑iOS的心思,搜集了一下资料后,还是做了一些尝 ...

  3. iOS本地存储-数据库(FMDB)

    初识FMDB iOS中原声的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦,于是就出现了一系列将SQLite封装的库.本文讲解的FMDB就是其中的一个. FMDB PK ...

  4. iOS进阶学习-数据库

    一.数据库管理系统 1.SQL语言概述:SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 2.常见 ...

  5. 20个可以帮你简化iOS app开发流程的工具

    这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是 ...

  6. iOS APP安全杂谈

      iOS APP安全杂谈 高小厨 · 2015/06/30 10:16 0x00 序 以前总是在这里看到各位大牛分享其安全渗透经验,而今我也很荣幸的收到了乌云的约稿,兴奋之情难以言表.由于IOS是一 ...

  7. ios app开发步骤

    虽然开发一个app的任务看上去可能很艰巨,但是整个过程可以抽象成几个相对简单的步骤,下面这些步骤会在你开发第一个app时帮你步入正途. 定义Concept 每个好app都是从一个concept开始. ...

  8. iOS App稳定性指标及监测

    一个App的稳定性,主要决定于整体的系统架构设计,同时也不可忽略编程的细节,正所谓"千里之堤,溃于蚁穴",一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃.尤其因为 ...

  9. iOS App之间常用的五种通信方式及适用场景总结

    iOS系统是相对封闭的系统,App各自在各自的沙盒(sandbox)中运行,每个App都只能读取iPhone上iOS系统为该应用程序程序创建的文件夹AppData下的内容,不能随意跨越自己的沙盒去访问 ...

随机推荐

  1. nil和Nil和NULL的判断

    ,nil和Nil和NULL的判断 开 发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null-,然后我们把此值赋值给 NSArray,NSdictionary,或是N ...

  2. Kail Linux渗透测试培训手册3第二章信息采集

    Kail Linux渗透测试培训手册3第二章信息采集 信息收集是网络攻击中最重要的步骤之一.渗透攻击.我们需要收集各种信息目标.该信息收集.攻击成功的概率越大.介绍信息收集的相关工具.本文选自< ...

  3. SpringBoot集成PageHelper时出现“在系统中发现了多个分页插件,请检查系统配置!”

    近日在项目中使用SpringBoot集成PageHelper后,跑单元测试时出现了"在系统中发现了多个分页插件,请检查系统配置!"这个问题. 如下图所示: org.mybatis. ...

  4. CentOS下Apache的停止和卸载

    昨晚搞到一台全球性价比最高的服务器,折腾一晚上,好不容易把node服务开启了,结果访问不了我的网站!!! 访问我的网站,显示的是一个Apache欢迎页面.我想,是不是像之前那样,80端口没有开放,然后 ...

  5. VC和matlab混合开发学习

    作者:朱金灿 来源:http://blog.csdn.net/clever101 第一种方式是直接调用Matlab Engine的接口.Matlab Engine 采用Client/Server的方式 ...

  6. 使用相对路径导入ado库的方法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 常用的导入ado库的语句: #import "c:\program files\common files\s ...

  7. phpcms视图查询数据

    {pc:get sql="SELECT * FROM phpcms WHERE id in ($id) ORDER BY listorder ASC LIMIT 0, 1--"re ...

  8. Obtaining Directory Change Notifications(微软的例子,使用FindFirstChangeNotification,FindNextChangeNotification,FindCloseChangeNotification API函数)

    An application can monitor the contents of a directory and its subdirectories by using change notifi ...

  9. uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式

    原文:uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式 解决方案目录 > Package.appxmanifest 双击打开,把支持的旋转:纵向勾上,只勾这一个其他不勾,就可以了.同理,想让 ...

  10. Blend_技巧篇_淡入淡出

    原文:Blend_技巧篇_淡入淡出 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010265681/article/details/766517 ...