如何在android应用程序中使用持久数据库

时间:2013-10-03 18:15:56

标签: c# android sqlite xamarin

我正在使用SQLite数据库在Xamarin(C#)中开发一个Android应用程序。但问题是每次我在模拟器或手机上安装应用程序时,都会删除旧数据库。

有什么办法可以让数据库永久化吗?假设用户将再次重新安装应用程序,即使卸载了应用程序,我希望它出现在设备上。 如果用户不想删除所有内容,我如何在卸载应用程序时询问用户是否要删除所有内容然后删除所有数据或至少维护数据库?

3 个答案:

答案 0 :(得分:2)

如果卸载应用程序,则无法保留数据库。

答案 1 :(得分:0)

启动模拟器时,请确保未选中“擦除用户数据”。这将允许数据在您测试时保持不变。我不知道卸载后是否可以保留数据,因为它默认存储在名为data / data的应用程序根目录下的目录中

答案 2 :(得分:0)

  

有什么方法可以让数据库永久化吗?

缺少某种自定义ROM,nope。

  

如果用户不想删除所有内容,如何在卸载应用程序时询问用户是否要删除所有内容然后删除所有数据或至少维护数据库?

您将无法提示用户,因为他们正在删除应用程序以执行其他操作。如果这是一个可用的选项,不道德的开发人员可以使用这样的钩子在不同的位置重新安装他们的应用程序,这是不好的。

但是,您可以包含某种偏好,允许用户备份其数据并将数据库复制到应用程序专用目录之外的位置。当然,如果数据应该是私有的,你必须提供自己的加密方式,并且不能保证文件不会被用户,其他应用程序等删除。

如果您的信息本质上不敏感,可能会将数据库从一开始就写入公共目录(除了您的应用程序filesDir or externalFilesDir之外的其他任何内容)。应用程序时不会删除公共目录中的文件已卸载。

但是你可能会遇到更大的问题。如果用户正在切换设备,则数据库的本地副本将无济于事。您将需要一些下载信息和恢复状态。此时,大多数人都倾向于将信息发送到某种Web服务。 Android的Backup Manager可能会对您有所帮助。