WebSQL и jQuery - БД исчезает при обновлении

У меня есть очень простое приложение (начало большого приложения), которое на данный момент делает одну вещь. Все, что он делает, это создает новую базу данных и таблицу и вставляет одну строку данных. Проблема в том, что когда я нажимаю «обновить» в браузере, данные и таблица исчезают. Я использую Chrome и инструменты проверки разработчиков для просмотра данных в таблицах WebSQL.

У кого-нибудь было такое раньше? Что я делаю не так? Я думал, что смысл HTML5 заключается в постоянных данных, поэтому даже при обновлении БД должна оставаться. Я ошибаюсь в этом?

Вот мой простой код:

index.html

  <div data-role="main" class="ui-content">
    <h2>Hello</h2>
    <button id="deviceReady">Device Ready</button>
    <button id="resetSQL">Reset SQL</button>
  </div>

Затем немного jQuery:

$(document).ready(function() {
  $("#deviceReady").click(function(){
    alert("device ready");
    initDB();
  });

  $("#resetSQL").click(function () {
    var db = openDatabase(dbName, dbTitle, dbVersion, dbMaxSize);
    db.transaction(function(tx) {
      tx.executeSql('DROP TABLE IF EXISTS creds');
      tx.executeSql('DROP TABLE IF EXISTS foo');
    });
  });
});

Актуальная информация о БД

function initDB() {
  var db = openDatabase(dbName, dbTitle, dbVersion, dbMaxSize);
  db.transaction(function(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS creds (id unique, usr, psw)');
    tx.executeSql('INSERT INTO creds (id, usr, psw) VALUES (1, "none", "none")');
  });
}

Итак, все, что я делаю, это открываю веб-страницу, нажимаю кнопку «Устройство готово», чтобы запустить функцию initDB. Данные отображаются в базе данных правильно, но затем, когда я обновляюсь, они исчезают.


person Garfonzo    schedule 12.02.2014    source источник


Ответы (2)


Вы правы, данные должны оставаться, если вы не запустите таблицу удаления или запрос на удаление. Таким образом, в этом коде есть только место, где у вас есть сброс обработчика кликов, попробуйте прокомментировать это и посмотреть, сохраняются ли данные. Может быть, каким-то образом это событие щелчка запускается, а не просто регистрируется.

person TechMaze    schedule 02.03.2014
comment
Вы правы (насчет того, что данные остаются). В итоге я просто продолжил свою разработку, предполагая, что данные на самом деле все еще там. Конечно же, это было. Однако при нажатии кнопки «Обновить» это все равно будет выглядеть так, как будто данные исчезли, но они все еще были там. Это усложняло отладку, так как я не мог просматривать данные, если нажимал кнопку «Обновить», хотя они были там. - person Garfonzo; 03.03.2014

Chrome не показывает базы данных, если вы не открыли их через openDatabase. Базы данных все еще там, они просто скрыты. Вы должны вызвать функцию, чтобы действительно отобразить вашу базу данных.

person Michaël Randria    schedule 14.01.2021