我无法决定为我的移动应用实施数据库。我正在使用带有jquery mobile和phonegap的javascript来希望部署到IOS和Android。该数据库基本上是大约60-70个位置名称,描述,纬度和经度的列表。即使用户没有互联网访问权限,我也需要数据可用,并且需要执行查询,例如按最近距离对位置进行排序。
有没有办法预先创建数据库文件并根据需要打开,或者每次我的应用程序打开时是否需要创建数据库?即使应用程序关闭后数据库文件是否驻留在设备上,或者在重新启动应用程序时是否再次创建数据库文件?
有任何建议或示例吗?
谢谢,
罗伯特
答案 0 :(得分:2)
browser storage有几种类型,例如localStorage,它们都是内置的,可以直接使用。
存储对象是标准的最新成员。因此,它们可能并不存在于所有浏览器中..........使用cookie严重限制了可以保存的最大数据大小。
代码示例:
function storeMyContact(id) {
var fullname = document.getElementById('fullname').innerHTML;
var phone = document.getElementById('phone').innerHTML;
var email = document.getElementById('email').innerHTML;
localStorage.setItem('mcFull',fullname);
localStorage.setItem('mcPhone',phone);
localStorage.setItem('mcEmail',email);
}
另一方面,localStorage可能还不够,因此,外部库可以实现利用存储中内置的浏览器并使数据库跨浏览器工作。
1- SQL,如DB sequelsphere (看起来非常适合举重!)
将直接从浏览器运行的查询的代码示例:
SELECT empl_id, name, age
FROM empl
WHERE age < 30
2-JSON,如DB taffydb (看起来适合日常活动!)
// Create DB and fill it with records
var friends = TAFFY([
{"id":1,"gender":"M","first":"John","last":"Smith","city":"Seattle, WA","status":"Active"},
{"id":2,"gender":"F","first":"Kelly","last":"Ruth","city":"Dallas, TX","status":"Active"},
{"id":3,"gender":"M","first":"Jeff","last":"Stevenson","city":"Washington, D.C.","status":"Active"},
{"id":4,"gender":"F","first":"Jennifer","last":"Gill","city":"Seattle, WA","status":"Active"}
]);
// Find all the friends in Seattle
friends({city:"Seattle, WA"});
3-既然你提到了移动设备,那么jstorage是一个跨浏览器的键值存储数据库,用于在浏览器本地存储数据 - jStorage支持所有主流浏览器,都在桌面上(是的 - 甚至Internet Explorer 6 )和移动设备。
如果您想要更多选项 - &gt;(client-side-browser-database)
答案 1 :(得分:0)
最简单的方法是使用localStorage。
window.localStorage.setItem("key", "value");
var value = window.localStorage.getItem("key");
如果您需要存储更多数据并使用复杂查询,请使用真正的数据库。
两者都可以在Cordova Docs on Storage
中找到答案 2 :(得分:0)
还有pouch db。我在我的Ionic App上使用它。工作得很好,非常简单易学。我仅将本地存储用于较小的临时使用数据(在会话中)。为了在应用程序关闭和重新打开时保持数据,Pouchdb运行良好。默认情况下,它的调用是异步的。适用于Promises。