【问题标题】:Can I use Sqlite in a WinRT application (javascript)?我可以在 WinRT 应用程序 (javascript) 中使用 Sqlite 吗?
【发布时间】:2011-12-11 17:08:31
【问题描述】:

是否可以在 windows 8 (winRT) javascript 应用程序中使用 Sqlite 数据库?

我想要实现的是下载一个Sqlite数据库并在使用前将其存储在本地存储中。我相信基于 javascript 的 WinRT 应用程序可以使用某种形式的本地存储,但我想知道 Sqlite 在这种情况下是否可用。

我也知道 Sqlite 的 .Net 实现使用了一些 win32 调用,我相信 windows8 应用程序认证过程不允许这些调用。

【问题讨论】:

    标签: javascript sqlite windows-8 windows-runtime


    【解决方案1】:

    JavaScript 具有开箱即用的 HTML5 IndexedDB。

    至于 SQLite,您可以使用它,前提是您首先将其包装为可以从 JavaScript 使用的 WinRT 组件,例如使用 C++/CX。它的 API 表面并没有那么大,所以它肯定是可能的。前段时间我尝试为 Metro 编译 SQLite,只有少数 Win32 API 调用在应用程序容器中不可用,必须更换 - 没什么大不了的。

    【讨论】:

      【解决方案2】:

      我们为此创建了SQLite3-WinRT。它是 SQLite 的 WinRT 组件包装器,通过了 Windows Metro 风格应用程序认证。它还包括一个易于使用的 JavaScript 抽象。

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 这是一个 winrt 包装器,这不会改变 sqlite 仍然使用 Metro 中不允许的 win32 调用的事实。
        • @iaimtomisbehave 我不确定您是否正确。请参阅这篇文章visualstudiomagazine.com/articles/2013/02/27/…,它表明您可以在 Windows 商店应用程序中使用 sqlite,这直接来自 MSFT。
        • @satur9nine 那个特定的库仍然只是一个包装器。当我发表评论时,sqlite 本身与 winrt 不兼容,但从那时起,sqlite 增加了对它的支持。
        【解决方案4】:

        是的,Windows 8 RTM 现在支持 SQLite 数据库。您现在可以从Windows Dev Center 下载所有内容(Windows 8、工具、示例)。

        【讨论】:

          【解决方案5】:

          是的,您可以在 WinRT 机器中使用 SQLite。 只需按照以下步骤操作

          1. 创建一个新项目。
          2. 转到引用,然后右键单击那里的引用,您将获得 Manage NuPackage 点击它。
          3. 在线搜索 Sqlite-net 包,安装该包。
          4. 再次右键单击“引用”并单击“添加引用”,在“扩展”部分中,您将获得两个未选中的引用 MS Visual C++ 运行时和 Sqlite Windows 运行时。检查参考并添加参考。它将在您的解决方案资源管理器中显示两个 CS 文件。
          5. 现在从https://github.com/doo/SQLite3-WinRT 下载 Zip 文件,它将为您提供在项目中使用 cs 文件的包装器。
          6. 在任意位置解压。
          7. 现在在项目中转到 FILE->ADD->Existing Project-> 并浏览您的解压缩位置。在那里,您将在 SQLite3Component 中获得一个文件 SQLite3Component.vcxproj。添加该文件。
          8. 现在包装器项目已包含在您的项目中。
          9. 现在,在您解压缩的文件中,您将获得 SQLite3JS 文件夹,复制该文件夹并粘贴到您的解决方案资源管理器中。
          10. 现在您可以在项目中使用 sqlite。
          11. 尝试构建您的项目,它会显示两个错误,即 winres.h 文件不存在。为此,转到错误位置,将其重命名为 winresrc.h 并再次构建它。现在它将构建,您可以在项目中使用 sqlite。
            1. 要使用 SQLite3JS 的 .js 文件,请在要使用 sqlite 的 html 页面中提供 js 文件的 src,例如 SQLite3JS\js\SQLite3.js。 这里我给你一些在 js 中使用 sqlite 的例子 // 这将创建数据库名称 db.sqlite 并尝试创建表名称 Notes。如果它不存在 var dbPath = Windows.Storage.ApplicationData.current.localFolder.path + '\db.sqlite'; SQLite3JS.openAsync(dbPath) .then(函数(分贝){ return db.runAsync('CREATE TABLE Notes (id TEXT PRIMARY KEY, notes TEXT)'); 我希望所有这些步骤对您有所帮助。

          【讨论】:

          • 嗨..我试过你上面的步骤。但是我收到一个错误“compobj.dll 对于初始化的 ole2.dll 来说太旧了”。知道如何解决这个问题吗?
          猜你喜欢
          • 1970-01-01
          • 2012-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-10
          • 2013-06-14
          • 2016-01-24
          • 1970-01-01
          相关资源
          最近更新 更多