使用 WebKit 数据库存储高分记录

3
我可以帮您翻译成中文。这段内容是关于编程的,作者制作了一个简单的适用于移动端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个回答

2
使用 localStorage 替代。这样使用起来会更简单(假设您不会在每个客户端上存储数十万的高分数)。
另外,WebSQL 已经被弃用,推荐使用 IndexedDB(尽管后者还没有在所有浏览器中都可用)。 localStorage 只是一个持久化对象,保存字符串,所以您可以将包含所有(小型)数据的 JSON 存储在其中。
localStorage['highscores'] = JSON.stringify(your_highscores_table);

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

或者您可以使用不同的键来拆分它,而不是将所有内容都放在“highscore”中。

你能提供一些示例代码,或者指导我如何学习使用LocalStorage吗? - Ben
@Ben:很简单:localStorage['somekey'] = 'somevalue';。然后使用 somevalue = localStorage['somekey']; 获取它。只需注意,只能保存字符串。 - pimvdb

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命令在参数列表后接受成功和失败处理程序作为参数;添加这些处理程序将有助于调试未能成功执行的查询,否则这些查询会默默地失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接