如何创建本地脱机数据库

时间:2013-05-29 13:59:10

标签: javascript html css database offline

我正在使用HTML,CSS和JavaScript制作待办事项列表应用程序,我认为存储数据的最佳方式是本地数据库。我知道如何使用localStoragesessionStorage,我也知道如何使用在线MySQL数据库。但是,此应用程序必须能够脱机运行并且应该脱机存储其数据 有没有办法只用HTML和JavaScript来做到这一点?


回应评论:

  

“你说你知道如何使用localStorage ......所以这似乎是什么问题?”

@Lior我所知道的localStorage是你可以存储单个结果作为变量,而我希望存储一个包含不同列的行,其中包含有关该对象的不同数据。但是,localStorage可以保存一个对象,如果是这样的话,它会用通常的对象表示法引用吗?

  

任何实施都可能取决于您的用户更喜欢使用哪种浏览器。

@paul我认为chrome最受欢迎。


好的,我想澄清我所问的确实是我如何使用JavaScript和HTML 而不是我是否有办法用HTML和JavaScript的?的。基本上,我想要一种SQL数据库,它可以将其内容保存在用户的机器上而不是在线。

什么解决了我的问题是使用WebDB或WEBSQL(我认为它被称为类似的东西)。

1 个答案:

答案 0 :(得分:11)

我回答这个问题已经晚了大约3年,但考虑到当时没有关于可用选项的实际讨论,以及OP最终选择is now deprecated的数据库,我想我和我#39;在这件事上投入我的两分钱。

首先,需要考虑一个人是否真的需要客户端数据库。更具体地说......

  • 您的数据项之间是否需要明确或隐含的关系?
  • 查询所述项目的能力如何?
  • 或太空5 MB以上?

如果你的回答是"否"对于上述所有内容,请使用localStorage,避免出现WebSQL和IndexedDB API的麻烦。好吧,也许只是后者的头痛,因为如前所述,前者已被弃用。

否则,就本机客户端数据库而言,IndexedDB是唯一的选择,因为它是唯一一个保留在W3C标准轨道上的数据库。

如果您想利用这些设施中的任何一个,请查看BakedGoods,而不必编写低级存储操作代码。有了它,例如,将数据放在客户端支持的第一个遇到的本机数据库中就像这样简单:

bakedGoods.set({
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}],
    storageTypes: ["indexedDB", "webSQL"],

    //Will be polyfilled with defaults for equivalent database structures
    optionsObj: {conductDisjointly: false},

    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){}
});

哦,为了完全透明,BakedGoods由这个人维护在这里:)。