当离线时,是否可以通过HTML5下载SQLite数据库以供本地使用?

3
我正在考虑构建一个HTML5应用程序,需要从服务器下载SQLite数据库,然后在离线时本地访问该数据库以引用数据。
是否可能下载预填充的SQLite数据库,并在本地使用HTML5访问它?我没有找到任何关于此的示例或教程。
我的当前想法是构建网站,使其可以通过清单缓存文件在离线状态下运行(目前没有问题),但它还需要访问从服务器下载的预填充的SQLite数据库,这是我不确定如何处理的部分。
当在线时,HTML5应用程序需要具有检查服务器更新、重建清单缓存并再次更新数据库的能力...
2个回答

3
HTML5和SQLite并不是同一件事。 HTML5的离线存储和Web SQL功能使用SQLite实现,但并不是所有实现都会使用SQLite。
话虽如此,简短的回答是:不行。
相反,您应该通过存储更新时间戳并通过JSON(或类似方式)来往数据来实现数据同步。

1
+1技术混搭通常是可能的,但当它们不合适时也往往是一个坏主意。一个重要的线索是当你找不到任何示例或教程时(这不是规则,但是一个重要的线索)。 - Michael Durrant

1

有一个Web SQL数据库规范提供了类似SQL的接口,但不幸的是它已经不再得到积极维护。然而,它在Chrome、OperaSafarihttp://en.wikipedia.org/wiki/Web_SQL_Database)中得到了实现。这里有有关Web数据库的教程

如果你的数据库小于5MB(http://dev.w3.org/html5/webstorage/#disk-space),并且你可以使用像字典/数组/哈希表之类的东西,那么一个可能的替代方案是使用本地存储

因此,如果您的浏览器支持本地存储,则将数据库作为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库


谢谢Kajic。我没有意识到Web SQL(使用SQLite)已经死了。这对我的计划非常重要。不幸的是,Web SQL与清单缓存结合起来,可以为需要离线功能的HTML5移动应用程序提供相当不错的解决方案。这种基于HTML5的解决方案比开发Android / iOS应用程序要容易得多。我可以看到IndexedDB很有用,但它肯定不会像WebSQL带来的那样强大。 :( - climbd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接