使用webkit数据库存储来获得高分

时间:2011-03-26 20:47:25

标签: javascript database html5 webkit

我刚为移动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]);
});

它似乎没有做任何事情!?

我该如何解决这个问题?

我还必须创建一个打印出最高分的循环,如果你对这样的东西有任何建议,它也会非常有帮助。

2 个答案:

答案 0 :(得分:2)

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

此外,WebSQL已被弃用,转而使用IndexedDB(虽然后者尚未出货浏览器)。

localStorage只是一个持有字符串的持久对象,因此您可以使用所有(小)数据为其提供JSON。

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

读:

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

或者您可以使用不同的键将其拆分,而不是将所有内容都归结为'highscore'

答案 1 :(得分:0)

你可能想要更像的东西:

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]);
});

请注意,您必须明确地删除原始表格。

每个executeSql命令在参数列表之后作为参数获取成功和失败处理程序;添加这些将有助于将来调试失败的查询,因为它们会以静默方式失败。