Using SQLite with WinRT

Using SQLite with WinRT

本文关键字:WinRT with SQLite Using      更新时间:2023-10-16

我正在开发一个metro ui应用程序,我想为一些内部数据使用SQLite而不是JET,以便利用一些已经编写的代码。

然而,当我尝试使用sqlite3_open打开数据库时,它不起作用。我得到一个错误,说a不能打开数据库。

我相信SQLite使用的一些api不能在metro风格的应用程序上使用。

有人能帮我一下吗?至少告诉我如何确定应该移植哪些api ?

这段代码应该可以工作了:

auto localAppDataParh = Windows::Storage::ApplicationData::Current->LocalFolder->Path;
std::wstring path( localAppDataParh->Data() );
path += L"\sample.db";
sqlite3* db;
int rc = sqlite3_open16( path.c_str(), &db);

我相信SQLite使用的一些api不能在metro风格的应用程序上使用。

可能工作(至少在预览版上),但不允许。Windows应用程序证书套件显示:

<>之前错误:此应用程序未通过支持的API检查。此应用程序类型不支持kernel32.dll中的API CreateFileA。此应用程序类型不支持kernel32.dll中的API CreateFileW。此应用程序类型不支持kernel32.dll中的API DeleteFileA。::

尝试在本地文件夹中打开数据库。下面是一个有效的包装器:http://sqlwinrt.codeplex.com/

刚刚发布了一个新的WinRT SQLite3变体,它与Windows Store指南兼容。见https://github.com/doo/SQLite3-WinRT

试试这个(仅适用于UTF-8数据库文件名):

int ret = Sqlite3.sqlite3_open_v2("qq.db", out db, 1, "");

我没有在WinRT中尝试过sqlite,但我认为它应该可以工作。最有可能的原因是您没有尝试打开的文件的正确权限。检查以确保您可以使用fopen()之类的简单API打开该文件。如果失败,则是权限问题。你需要把你的数据库放在一个你的应用程序有自然权限的目录中。例如,它不能在用户的文档文件夹中