前面有写,可以利用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. 数据结构 Tricks(一)—— 父节点和左右孩子索引号之间的关系

    如果以第 0 个位置开始标记树根节点,则第 i 个结点的左右孩子分别为: 2i+1 2i+2 反之,如果一个结点的标号为 i,则其父节点为: i/2:i 为左孩子结点: i/2-1:i 为右孩子结点: ...

  2. android tips—开机引导启动wifi设置

    在开机引导(Setupwizard,Guide)中都有关于wifi设置项,我得做法例如以下: Intent intent = new Intent(); intent.setClassName(&qu ...

  3. 常见的面试C#技术题目

    遍历查询窗体界面的textbox为空值 ? foreach (System.Windows.Forms.Control control in this.Controls)            {   ...

  4. 用决策树模型求解回归问题(regression tree)

    How do decision trees for regression work? 决策树模型既可以求解分类问题(对应的就是 classification tree),也即对应的目标值是类别型数据, ...

  5. 深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地

    相信很多软件开发人员们对今年国内新兴的云端开发工具——华为软件开发云都有耳闻,有些人可能还免费体验过,由于它5人以下的团队是免费使用的,很庆幸本人的这个项目正好5个人,就注册使用了.下面就自己的使用心 ...

  6. Apache2.4.25 VirtualHost rewrite_module

    LoadModule rewrite_module libexec/apache2/mod_rewrite.so Include /private/etc/apache2/extra/httpd-vh ...

  7. 详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)

    作为初入Qt学习的新人,花了整整一两天时间,对Qt编译版本等问题进行了一步步探索,首先感谢网站博客中文章,开始也不是很明白一些几个问题: 1.Qt版本问题 作为初学者,可能下载时这么多版本,如何选择呢 ...

  8. jquery 源码学习(四)构造jQuery对象-工具函数

    jQuery源码分析-03构造jQuery对象-工具函数,需要的朋友可以参考下.   作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原 ...

  9. Numpy Usage Introduction

    Reference : http://my.oschina.net/u/175377/blog/74406 试验性的Numpy教程 原文来自Tentative NumPy Tutorial 目录 先决 ...

  10. altium designer电气符号和包的常用元素

    1. 标准电阻:RES1.RES2.包裹:AXIAL-0.3至AXIAL-1.0 两port可变电阻器:RES3.RES4.包裹:AXIAL-0.3至AXIAL-1.0 三port可变电阻:RESIS ...