2012-03-07 18 views
3

我正在考慮構建一個HTML5應用程序,該應用程序需要從服務器下載SQLite數據庫,然後在本地訪問該數據庫以在脫機時引用數據。離線時可以通過HTML5下載SQLite數據庫以便本地使用嗎?

是否可以下載預填充的SQLite數據庫並使用HTML5在本地訪問它?我一直無法找到任何示例或教程。

我目前的想法是構建網站,以便它可以在脫機時通過清單緩存文件運行(目前爲止沒有問題),但它也需要訪問從下載的預填充SQLite數據庫一個服務器,這是我不知道如何處理的部分。

當在線時,HTML5應用程序需要有檢查服務器更新,重建清單高速緩衝存儲器,並再次更新數據庫的能力...

回答

3

HTML5和SQLite是不一樣的東西。 HTML5的脫機存儲和Web SQL功能使用SQLite實現 - 但並非所有實現都將使用SQLite。

這就是說,簡短的答案是:不。

您應該通過做類似的事情來同步您的數據....通過JSON(或類似的)存儲更新的時間戳和來回穿梭數據。

+1

+1技術混搭往往是可能的,但當他們不合適時也往往是壞主意。一個很大的線索是,當你找不到任何示例或教程時(不是一條規則,而是一條重要線索)。 – 2012-03-08 00:03:03

1

a specification of a Web SQL Database可以提供類似於SQL的界面,但不幸的是它不再處於主動維護狀態。但是,它在Chrome,OperaSafarihttp://en.wikipedia.org/wiki/Web_SQL_Database)中實施。這裏是a tutorial on web databases

如果您的數據庫小於5   MB(http://dev.w3.org/html5/webstorage/#disk-space),並且您可以使用類似字典/數組/散列映射的東西,則可以使用local storage。因此,如果您的瀏覽器支持本地存儲,則想法是將數據庫作爲JSON字符串存儲在本地存儲中(本地存儲只能存儲字符串),並且只要您需要訪問加載並解析它的數據。您需要以下工具:

// Test if you browser supports local storage 
'localStorage' in window && window['localStorage'] !== null; 

// Store value in local storage 
localStorage.setItem(key, value); 

// Load value from local storage 
localStorage.getItem(key); 

// Parse JSON to JavaScript object 
JSON.parse('{"name":"John"}'); 

// Convert JavaScript object to JSON 
JSON.stringify({"name":"John"}) 

大多數現代瀏覽器都具有本機JSON支持。對於舊版瀏覽器,有優秀的JSON-js library

+0

非常感謝Kajic。我沒有意識到Web SQL(使用SQLite)已經死了。這對我的計劃至關重要。這很不幸,因爲Web SQL與清單緩存相結合,可能會允許基於HTML5的漂亮移動應用程序需要脫機功能。這個基於HTML5的解決方案比開發android/ios應用程序要容易得多。我可以看到IndexedDB是有用的,但它肯定不會有WebSQL帶來的能力。 :( – climbd 2012-03-08 02:49:57

相關問題