我刚为移动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]);
});
它似乎没有做任何事情!?
我该如何解决这个问题?
我还必须创建一个打印出最高分的循环,如果你对这样的东西有任何建议,它也会非常有帮助。
答案 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
命令在参数列表之后作为参数获取成功和失败处理程序;添加这些将有助于将来调试失败的查询,因为它们会以静默方式失败。