在HTML5移动应用程序中实现数据库

时间:2014-02-19 16:18:50

标签: javascript jquery html5 sqlite cordova

我无法决定为我的移动应用实施数据库。我正在使用带有jquery mobile和phonegap的javascript来希望部署到IOS和Android。该数据库基本上是大约60-70个位置名称,描述,纬度和经度的列表。即使用户没有互联网访问权限,我也需要数据可用,并且需要执行查询,例如按最近距离对位置进行排序。

有没有办法预先创建数据库文件并根据需要打开,或者每次我的应用程序打开时是否需要创建数据库?即使应用程序关闭后数据库文件是否驻留在设备上,或者在重新启动应用程序时是否再次创建数据库文件?

有任何建议或示例吗?

谢谢,

罗伯特

3 个答案:

答案 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。