2011-10-20 52 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

相關問題