我正在使用 asp.net MVC 开发一个 Web 应用程序。我需要能够根据用户的需求通过 HTML5 使整个应用程序脱机。
虽然我可以创建清单并使 CSS/JS/图像文件等文件脱机。我不确定如何使数据库连接脱机(我想像 SQLLite 之类的?)
我需要 IE 8+、Safari (IOS) 和 chrome (android) 支持此功能。
我不能只使用本地存储,因为在离线浏览应用程序时需要提供很多查找值。这意味着大量数据需要经过用户的批准才能离线存储。
有什么想法吗?
我正在使用 asp.net MVC 开发一个 Web 应用程序。我需要能够根据用户的需求通过 HTML5 使整个应用程序脱机。
虽然我可以创建清单并使 CSS/JS/图像文件等文件脱机。我不确定如何使数据库连接脱机(我想像 SQLLite 之类的?)
我需要 IE 8+、Safari (IOS) 和 chrome (android) 支持此功能。
我不能只使用本地存储,因为在离线浏览应用程序时需要提供很多查找值。这意味着大量数据需要经过用户的批准才能离线存储。
有什么想法吗?
对于 IE8+、Safari 和 Chrome 支持,您应该使用 SequelSphere: www.SequelSphere.com
SequelSphere 是唯一具有真正广泛的浏览器和平台支持的关系数据库产品。它还通过使用应用程序缓存清单“离线”工作,并将其数据存储在 IndexedDB 或 LocalStorage 中(根据可用性按顺序)。
至于 WebSQL (SQLLite),IE 和 Firefox 不支持:WebSQL Usage by Browser
关于 SequelSphere,创建表再简单不过了:
db.catalog.createTable({
tableName: "EMPL",
columns: [ "EMPL_ID", "NAME", "AGE", "DEPT_ID" ],
primaryKey: [ "EMPL_ID" ],
data: [
[0,"Bob",32,0],
[1,"John",37,2],
[2,"Fred",28,1]
]
});
查询数据很简单:
var res = db.query("SELECT name, age, dept_id FROM empl WHERE Dept_ID = 2");
插入/更新/删除数据很容易:
db.insertRow("empl", [3, "Sue", 26, 2]);
db.updateRow("empl", [3, "Suzy", 26, 2]);
db.deleteRow("empl", [3, "Suzy", 26, 2]);
需要注意的一件事:由于这将在离线应用程序中使用,请确保将整个目录或每个表的“持久性范围”设置为“SCOPE_LOCAL”:
db.catalog.setPersistenceScope(db.SCOPE_LOCAL);
// -or-
db.catalog.getTable("empl").setPersistenceScope(db.SCOPE_LOCAL);
如果您有任何问题,只需通过电子邮件发送 SequelSphere 支持。
为了完全透明,我是 SequelSphere 的一部分,它似乎很好地回答了你的问题...... ;)