【问题标题】:How to access Sqlite database file in Xamarin UWP如何在 Xamarin UWP 中访问 Sqlite 数据库文件
【发布时间】:2016-11-25 12:28:39
【问题描述】:

我有一个 Xamarin 项目。在我的 UWP 项目的根目录中,我存储了一个 sqlite 文件,其中包含我的应用程序所需的初始表。我将“Build Action”设置为“Content”。我找到的所有示例都在“ApplicationData.Current.LocalFolder.Path”中查找文件,但是当我运行应用程序时,该文件夹中没有任何内容。一切都在 Debug 文件夹中创建。我应该使用不同的路径进行调试和发布吗?存储是如何工作的?应用是否在 UWP 中被沙盒化?

【问题讨论】:

    标签: xamarin uwp


    【解决方案1】:

    我找到的所有示例都在“ApplicationData.Current.LocalFolder.Path”中查找文件,但是当我运行应用程序时,该文件夹中没有任何内容

    是的,您设置的 sqlite 文件只是 UWP 应用程序的内容,我们需要在第一次运行时以编程方式将其复制到 LocalFolder。使用StorageFile.CopyAsync()方法复制文件到指定位置

    请看Sunteen这个question的回答

    另一个位置是可以读/写的应用程序数据位置。您可以将数据库文件从安装目录复制到应用程序数据目录以供使用。以下代码示例用于连接本地文件夹中的数据库文件......

    【讨论】:

    • 我已经解决了这个问题,但是由于您的答案与我的解决方案相匹配,我将其标记为其他人从中受益的答案。
    【解决方案2】:

    总的来说,我是如何完成我的,

    • 确保您安装了this

    • 对于 Windows 应用程序(UWP、WP8、WP8.1 等),所有内容文件都应为 存储在根级别(没有子文件夹。也许有一个解决方法 这但它是默认的)。对我来说,存储起来非常混乱 那。因此我创建了一个共享项目来存储 sqllite.db 和 图像等所有 Windows 应用程序的任何共享文件。 设置 Build Action= 内容并复制到输出目录= 不要复制

    • 异步方式

      var sqliteFilename = "myworkout.db3";
      
      string     path=Path.Combine(ApplicationData.Current.LocalFolder.Path,sqliteFilename);
      
      var platform = new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT();
                      var task = Task.Run(async () => { await CopyDatabase(); });
                      task.Wait();
      

      var _sqliteConnectionWithLock = new SQLite.Net.SQLiteConnectionWithLock(platform,new SQLite.Net.SQLiteConnectionString(path, false));

      var conn = new SQLiteAsyncConnection(() => _sqliteConnectionWithLock);

    • 同步代码

      var sqliteFilename = "mydatabase.db3";

                string path = Path.Combine(ApplicationData.Current.LocalFolder.Path,
        sqliteFilename);
      
                var platform = new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT();
      
                    var task = Task.Run(async () => { await CopyDatabase(); });
                task.Wait();
      
                 var conn = new SQLiteConnection(platform,path);
      

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2023-03-26
      • 1970-01-01
      • 2020-02-10
      • 2020-03-26
      • 2014-05-10
      • 2018-07-06
      • 2020-05-23
      • 2011-01-20
      相关资源
      最近更新 更多