首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在哪里存储SQLite数据库文件?

在哪里存储SQLite数据库文件?
EN

Stack Overflow用户
提问于 2012-01-24 00:39:57
回答 2查看 1.1K关注 0票数 1

我有一个带有记录的SQlite数据库文件,它是我的应用程序附带的。我只是使用添加到项目中的文件来执行插入和更新语句。上传到我的测试设备后,我得到了一个异常,文件是只读的。经过一些研究,我发现我必须将db文件复制到用户目录中才能进行插入。目前,这是可行的。但我有一个关于它的观点问题,我没有通过谷歌得到答案:

我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching中实现了它,在那里我检查它是否已经存在。

我应该把文件复制到哪里?我现在使用的是MyDocuments文件夹,这样可以吗?

由于该文件无法加密,其他应用程序能否访问该数据库文件?

当用户决定从设备中删除该应用程序时。数据库文件也会被删除吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 00:43:43

我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching中实现了它,在那里我检查它是否已经存在。

这真的要看情况了,但从我的角度来看,finishedLaunching是可以的。

我应该把文件复制到哪里?我现在使用的是MyDocuments文件夹,这样可以吗?

我不知道你说的"MyDocuments“文件夹是什么意思。每个应用程序都有一个专用的文档目录。这就是你应该复制它的地方。

由于文件无法加密,其他应用程序可以访问数据库文件吗?

不,它们运行沙箱(除非设备被越狱)

当用户决定从设备中删除应用程序时执行

。数据库文件也会被删除吗?

是,因为整个文档目录将被删除。

票数 3
EN

Stack Overflow用户

发布于 2012-01-24 01:14:51

我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching中实现了它

请记住,在FinishedLaunching watchdog终止您的应用程序之前,完成iOS执行的时间是有限的(大约15秒)。

根据你的数据库的大小,设备的速度和你需要做的其他处理,那么你可能想要考虑只检查它是否已经存在(这应该是快速的),然后从复制(如果需要)到另一个线程。

我现在使用的是MyDocuments文件夹,这样可以吗?

是的,使用Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments)是正确的。

@Lightforce回答中的其他所有内容都涵盖了剩下的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8975163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档