【问题标题】:Using webkit database storage for highscores使用 webkit 数据库存储高分
【发布时间】:2011-07-23 15:28:38
【问题描述】:

我刚刚为移动 webkit 制作了一个简单的 HTML5 游戏。我做了一个简单的函数,将记录插入数据库:

Javascript:

db = openDatabase('highscores', '1.0', 'Whackem Highscores', 2 * 1024 * 1024);
db.transaction(function (tx) {
      tx.executeSql('CREATE TABLE scores (id unique, int,text)');
      tx.executeSql('INSERT INTO foo (id, text) VALUES (?,?,?)',["",score,date1]);
});

它似乎什么也没做!?

我该如何解决这个问题?

我还必须制作一个打印出最高分数的循环,如果您对类似的事情有任何建议,这也将非常有帮助。

【问题讨论】:

    标签: javascript database html webkit


    【解决方案1】:

    你可能想要更多类似的东西:

    db.transaction(function (tx) {
          tx.executeSql('CREATE TABLE scores (id INTEGER PRIMARY KEY, score INTEGER, date_added TEXT)');
          tx.executeSql('INSERT INTO scores (score, date_added) VALUES (?,?)', [score, date1]);
    });
    

    请注意,您必须明确 DROP 原始表。

    每个executeSql 命令都在参数列表后面接受一个成功和一个失败处理程序作为参数;添加这些将有助于在将来调试失败的查询,否则它们会静默失败。

    【讨论】:

      【解决方案2】:

      请改用localStorage。使用起来会简单得多(假设您不会在每个客户端上存储数十万个高分)。

      此外,WebSQL 已被弃用,取而代之的是 IndexedDB(尽管后者尚未发布在浏览器中)。

      localStorage 只是一个保存字符串的持久对象,因此您可以将所有(小)数据提供给 JSON。

      localStorage['highscores'] = JSON.stringify(your_highscores_table);
      

      阅读:

      your_highscores_table = JSON.parse(localStorage['highscores']);
      

      或者您可以使用不同的键将其拆分,而不是将所有内容集中在 'highscore' 中。

      【讨论】:

      • 能否提供一些示例代码,或者指出正确的方向,以便我学习如何使用 LocalStorage?
      • @Ben:很简单:localStorage['somekey'] = 'somevalue';。然后使用somevalue = localStorage['somekey']; 获取它。请注意,只能保存String。
      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2011-06-18
      相关资源
      最近更新 更多