Using SQLite with WinRT
Using SQLite with WinRT
我正在开发一个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打开该文件。如果失败,则是权限问题。你需要把你的数据库放在一个你的应用程序有自然权限的目录中。例如,它不能在用户的文档文件夹中
相关文章:
- Problems with std::cin.fail()
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 在 Winrt/C++ 中使用应用服务
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- 无法将运行时类绑定到 XAML T 必须是 WinRT 类型
- DLL Made with CMake 使程序崩溃
- Using SQLite with WinRT