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

时间:2012-01-23 16:39:57

标签: ios sqlite xamarin.ios

我有一个SQlite数据库文件,其中包含我的应用程序附带的记录。 我刚刚使用我添加到项目中的文件来创建INSERT和UPDATE语句。 将其上传到我的测试设备后,我得到了一个例外,即该文件是只读的。 经过一些研究后我发现,我必须将db文件复制到users目录才能进行插入。这适用于现在。但我有一个关于它的问题,我没有通过谷歌得到答案:

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

  

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

这实际上取决于,但是从我的角度来看,完成启动是可以的。

  

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

我不确定“MyDocuments”文件夹的含义。每个Application都有一个专用的Document目录。那是你应该复制的地方。

  

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

不,他们运行沙盒(除非设备已越狱)

  

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

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

答案 1 :(得分:1)

  

我应该把我的复制过程放在哪里?我在AppDelegates FinishedLaunching

中实现了它

请记住,在iOS监视程序杀死您的应用程序之前,您有足够的时间完成FinishedLaunching执行(大约15秒)。

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

  

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

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

@Lightforce的其他所有内容都包含其余内容。