Использование хранилища базы данных webkit для рекордов - PullRequest
3 голосов
/ 26 марта 2011

Я только что сделал простую 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 голосов
/ 27 марта 2011

Используйте взамен localStorage.Это будет намного проще в использовании (при условии, что вы не собираетесь хранить сотни тысяч рекордов на каждом клиенте).

Кроме того, WebSQL устарела в пользу IndexedDB (хотяпоследний еще не включен в поставляемые браузеры).

localStorage - это просто постоянный объект, содержащий строки, поэтому вы можете передать ему JSON со всеми вашими (небольшими) данными.

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

Чтение:

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

Или вы можете разделить его, используя разные ключи, вместо того, чтобы смешивать все в 'highscore'.

0 голосов
/ 27 марта 2011

Возможно, вам нужно что-то более похожее на:

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 имеет успех и обработчик ошибокв качестве аргументов после списка параметров;их добавление поможет отлаживать неудачные запросы в будущем, так как в противном случае они молча будут сбои.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...