【问题标题】:Can't open database using SQLite on an UWP written in C++无法在用 C++ 编写的 UWP 上使用 SQLite 打开数据库
【发布时间】:2018-10-29 08:09:49
【问题描述】:

我正在制作一个需要访问数据库的 UWP。为此,我首先从以下链接下载并安装了 SQL 通用 Windows 平台:

https://sqlite.org/download.html

完成此操作后,我将其添加为参考并将其包含在我的代码中:

#include <sqlite3.h> //Not sure if I need to make any other changes for this to work

为了解决问题,我只有一个按钮和一个文本框。这是单击按钮时运行的代码:

    int rc;
    sqlite3 *testDB;

    if (SQLITE_OK == (rc = sqlite3_open("signers.db", &testDB))) { 
        Message->Text = "It worked!";
    }
    else {
        Message->Text = "Can't open Database";
    }

signers.db 这是我使用 SQLite 创建的数据库,因此我可以从我的程序中读取一些数据。每次我运行程序时,都会出现“无法打开数据库”的文本。我已经尝试了我在网上看到的所有解决方案,但似乎没有一个对我有用,因此我认为我在监督一些事情。我在 UWP 和使用数据库方面都是新手。

如果您需要任何其他信息,请随时索取。

【问题讨论】:

  • 数据库文件在哪里?
  • 它在项目的主文件夹中。
  • 我现在更改了它,因此它位于名为“database”的主文件夹的子文件夹中,并且我将“sqlite3_open()”函数的第一个参数更改为“ms-appx:///dataBase/ signers.db”,我知道我有特权,但它仍然不起作用。

标签: c++ visual-studio sqlite uwp


【解决方案1】:

如果您的包文件夹中有数据库,则它是只读的。您需要使用sqlite3_open_v2 并传递SQLITE_OPEN_READONLY 标志。

如果要打开数据库进行读/写,则需要先将其复制到本地文件夹。

(还要确保您确实设置了要部署的数据库;在“属性”窗口中确保将其设置为Content,并将其复制到输出目录)。

【讨论】:

    【解决方案2】:

    根据

    https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

    您对要打开的 db 文件所在的位置有一些限制。 sqlite 本身应该可以工作。尝试在文章中指定的文件夹中打开一个数据库。

    也可能只是一个损坏的数据库文件。您是否尝试创建一个空的?

    【讨论】:

    • 我创建了一个新的 db 文件以防万一,并创建了一个名为 dataBase 的新文件夹,我知道我可以访问该文件夹。我确信这一点,因为我创建了另一个可以以这种方式加载视频的应用程序。我读取 dB 文件的行已更改为此,但似乎仍无法正确打开它。 if (SQLITE_OK == (rc = sqlite3_open("ms-appx:///dataBase/signers.db", &testDB))) { Message->Text = "它成功了!"; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多