【问题标题】:How to backup sqlite database in xamarin.forms如何在 xamarin.forms 中备份 sqlite 数据库
【发布时间】:2019-08-25 19:02:37
【问题描述】:

我有一个按钮可以将我的本地数据库 (SQLITE) 备份到另一个路径,以便我可以通过电子邮件将文件发送给我。如何将 SQLite 数据复制到我的示例下载文件夹?

这是我的备份按钮的代码:

    private void BtnBackup_Clicked(object sender, EventArgs e)
    {
        string fileName = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "backend.db3");
        string backupfile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "backup.db3");
        File.Copy(fileName, backupfile, true);
    }

我可以检查数据是否已被复制,问题是当我转到目录时没有显示文件

【问题讨论】:

  • 关闭所有SqliteConnections并将其复制到GetExternalFilesDir位置,然后您可以通过adb复制到您的PC/Mac,通过设备监视器复制/打开等...stackoverflow.com/questions/54126671/…跨度>
  • @SushiHangover 我可以创建备份文件并上传到某个地方吗?
  • upload it somewhere ?你说的是云服务吗?个人网站?还是?
  • @SushiHangover 我的意思是,例如,我的应用程序中有一个备份按钮,然后将创建备份文件,然后将文件手动上传到例如谷歌驱动器
  • GetExternalFilesDir 返回的位置在您应用的安全沙箱之外,因此该模拟器|设备上的其他应用可以使用。

标签: xamarin xamarin.forms xamarin.android


【解决方案1】:

如果您在 android 设备上拥有数据库 - 使用 Android Studio 会非常容易(如果您在 PC 上拥有它):

  1. 打开Android Studio,点击查看->工具窗口->设备文件资源管理器;

  2. 在打开的窗口中,转到您的应用程序位置并找到文件 *.db

  3. 单击“另存为”并保存到您的 PC。

我还可以推荐一个非常有用的应用程序来检查您的 sqlite 数据库 - DB Browser for SQLite。试试看!

【讨论】:

  • 仅供参考:这仅在您的设备|模拟器不安全|可root时才有效,即如果您为模拟器使用基本 Android 映像,但不是已签名的 Google Play 映像之一.
  • @SushiHangover 同意。
  • 有没有办法获取sqlite数据库备份文件并手动上传,就像备份sql server时可以获取.bak文件并上传一样
  • @LawrenceAgulto 是的,我刚刚在我的回答中写了如何做到这一点)
【解决方案2】:

您可以从 apk 中提取 .db 文件。为此,您首先需要从您的应用程序创建一个备份。 使用 USB 连接设备并使用 adb 通过以下命令备份您的应用程序: adb backup -f ~/yourapp.ab -noapk com.yourname.yourapp

这将在您的主目录中创建一个 .ab(Android 备份)文件。 您可以使用另一个命令从该 .ab 文件中提取 .db 文件:

dd if=data.ab bs=1 跳过=24 | openssl zlib -d |焦油 -xvf -

【讨论】:

  • 如果设备不在我身边怎么办?
猜你喜欢
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多