引用和读取.sqlite数据库文件(C#/ UWP)

时间:2016-02-05 16:39:05

标签: c# sqlite uwp

我尝试做的就是使用我存储在应用程序的Assets文件夹中的.sqlite数据库文件(/Assets/CommonCore.sqlite)。我试图建立连接,我尝试了一些不同的东西:

    SQLite.Net.SQLiteConnection conn;

    public MainPage()
    {
        this.InitializeComponent();

        conn = new SQLite.Net.SQLiteConnection("Data Source=Assets/CommonCore.sqlite");

但是这会引发异常"不包含带有1个参数的构造函数"。

    string path;
    SQLite.Net.SQLiteConnection conn;

    public MainPage()
    {
        this.InitializeComponent();

        path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "CommonCore.sqlite");

        conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);

但引用了一个文件夹" \ AppData \ Local \ Packages \ 8ed84aca-896d-4286-ba91-e52316db2e89_dzc2ymb8n4xk4 \ LocalState \ CommonCore.sqlite"这显然不是我需要的文件。

我确定这是一件令我愚蠢的事情。

1 个答案:

答案 0 :(得分:2)

在UWP应用中,您可以访问的文件夹是有限的:

  • 用户使用FileOpenPicker或FolderPicker
  • 指定的所有文件
  • 来自FutureAccessList或MostRecentlyUsedList的文件。可以在清单文件中声明FutureAccessList(例如,Documents,Pictures,Videos文件夹)。但是,用户必须允许访问这些文件夹。
  • 使用文件扩展名关联或通过共享打开的文件。
  • 应用程序安装目录。
  • 应用程序数据位置。
  • 在某些情况下可移动设备。

Source

在您的情况下,您尝试写入应用程序数据位置。但是,每次安装应用程序时,此文件夹都是空的。

另一种方法是从安装文件夹中读取sqlite数据库。可以轻松地将项目中的文件添加到此文件夹中。要执行此操作,首先必须声明要打包的文件。这意味着将它们添加到安装文件夹中。首先,在工作目录(可以找到AppxManifest.xml的文件夹)中创建一个子文件夹。这不是必要的,但更清洁。我把我的文件夹叫做'数据'。

接下来,您可以检查是否正确执行了此操作。在visual studio中打开项目,然后单击解决方案资源管理器中的“显示所有文件”按钮。

'Show all files' button

之后,您应该能够在解决方案资源管理器中看到新文件夹及其内容。您现在可以右键单击该文件夹并选择“包含在项目中”。

Include in project

最后,您应该打开文件的属性(例如Data文件夹中的db.sqlite)并将构建操作设置为内容。

Set content

现在您可以使用以下代码连接到数据库:

public class Database
{
    string path;
    SQLite.Net.SQLiteConnection conn;

    public Database()
    {
        path = Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, "Data", "Questions.sqlite");
        conn = new SQLite.Net.SQLiteConnection(new
           SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
    }
}