Поиск по этому блогу

четверг, 5 декабря 2013 г.

Save application data on mobile device in phonegap with WebSQL

Как хранить настройки приложения сделанного в PhoneGap. Например, необходимо чтобы пользователь ввел какие-то настройки в приложении, сохранил их и при следующем запуске программы настройки загрузились и выставились в приложении. Для этого нам понадобится WebSQL.



Сохраняем параметры в базу данных. Открываем соединение с базой и пытаемся добавить данные.
saveSearchSetting: function () {
 
   ... 
 
   var db = window.openDatabase("saved_settings", "1.0", "SEARCH_SETTINGS DB", 1000000);
   db.transaction(page.populateDB, page.errorCB);
 
}

Заполняем базу данных.
populateDB: function (tx) {
  tx.executeSql('DROP TABLE IF EXISTS SEARCH_SETTINGS');
  tx.executeSql('CREATE TABLE IF NOT EXISTS SEARCH_SETTINGS (id unique, paramName, paramValue)');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (1, "fromCity", "' + page.fromCity + '")');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (2, "toCity", "' + page.toCity + '")');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (3, "deviceName", "' + page.deviceName+ '")');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (4, "categories", "' + page.categories+ '")');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (5, "types", "' + page.types+ '")');
  tx.executeSql('INSERT INTO SEARCH_SETTINGS (id, paramName, paramValue) VALUES (6, "pageNumber", "' + page.pageumber+ '")');
}

Загружаем сохраненные настройки. Пытаемся подключится к базе данных.
loadSavedSearchSettings: function () {
  var db = window.openDatabase("saved_settings", "1.0", "SEARCH_SETTINGS DB", 1000000);
  db.transaction(page.queryDB, page.errorCB);
}

Если подключится к базе удалось, тогда пытаемся выполнить запрос к базе данных.
queryDB: function(tx) {
  tx.executeSql('SELECT * FROM SEARCH_SETTINGS', [], page.querySuccess, page.errorCB);
}

Обработчик в случае ошибки при обращении к базе данных.
errorCB: function (err) {
  page.findGeolocation();
}

Если удалось получить данные в результате запроса к базе, то тогда сохраняем эти данные в переменные, которые потом используем для заполнения форм ввода на экране.
querySuccess: function(tx, results)  {
  var len = results.rows.length;
  for (var i=0; i<len; i++){
    if (results.rows.item(i).id == 1) {
      page.fromCity =  results.rows.item(i).paramValue;
    }
    if (results.rows.item(i).id == 2) {
      page.toCity =  results.rows.item(i).paramValue;
    }
    if (results.rows.item(i).id == 3) {
      page.deviceName=  results.rows.item(i).paramValue;
    }
    if (results.rows.item(i).id == 4) {
      var str =  results.rows.item(i).paramValue;
      page.categories = str.split(",");
    }
    if (results.rows.item(i).id == 5) {
      var str =  results.rows.item(i).paramValue;
      page.types = str.split(",");
    }
    if (results.rows.item(i).id == 6) {
      page.pageNumber = results.rows.item(i).paramValue;
    }
  }
  page.fillForm();
}

Комментариев нет:

Отправить комментарий