2011-10-20 38 views
7

是否可以在Windows 8(winRT)JavaScript应用程序中使用Sqlite数据库?我可以在WinRT应用程序(javascript)中使用Sqlite吗?

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

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

回答

8

JavaScript具有开箱即用的HTML5 IndexedDB。

对于SQLite,您可以使用它,只要您先将它封装为可从JavaScript使用的WinRT组件(例如,使用C++/CX。它的API表面并不那么大,所以它当然有可能。前段时间,我尝试了编译SQLite for Metro,并且只有几个Win32 API调用在应用程序容器中不可用并且必须被替换 - 没有什么重要的。

2
+2

这是一个WinRT的包装,这并不能改变SQLite的仍然是事实,使用未在地铁 – sarvesh

+0

@iaimtomisbehave允许我不知道你是正确的Win32调用请参阅本文HTTP。: //visualstudiomagazine.com/articles/2013/02/27/build-a-windows-store-app-using-sqlite.aspx这表明你可以在windows store应用中使用sqlite,并且这是直接来自MSFT。 – satur9nine

+0

@ satur9nine那个特定的库是s直到只是一个包装。当我发表评论时,sqlite本身并不是兼容的,但自此之后,sqlite增加了对它的支持。 – sarvesh

5

我们创造SQLite3-WinRT这一点。它是SQLite的WinRT组件包装器,它通过了Windows metro样式应用程序认证。它还包含一个易于使用的JavaScript抽象。

1

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

1

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

  1. 创建一个新项目。
  2. 去参考,然后右键点击那里你会得到管理NuPackage点击。
  3. 在线搜索Sqlite-net软件包,安装该软件包。
  4. 再次右键单击References并单击add refrences,在Extension部分,您将获得两个未经检查的参考MS Visual C++运行时和Sqlite Windows运行时。检查参考和添加参考。它将在您的解决方案资源管理器中有两个CS文件
  5. 立即下载Zip文件https://github.com/doo/SQLite3-WinRT它将为您提供在您的项目中使用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并尝试创建表名称注释。如果它不存在 var dbPath = Windows.Storage.ApplicationData.current.localFolder.path +'\ db.sqlite'; SQLite3JS.openAsync(dbPath) .then(函数(db){ }返回db.runAsync('CREATE TABLE Notes(id TEXT PRIMARY KEY,notes TEXT)'); 我希望所有这些步骤都可以帮到你
+0

嗨..我尝试了上面的步骤。但是我收到一个错误“compobj.dll对ole2.dll初始化太旧了”。任何想法如何解决这个问题? – meetme

相关问题