Хранение базы данных HTML5 (SQL lite) - несколько вопросов - PullRequest
26 голосов
/ 22 апреля 2010

Hy там,

Я не могу найти достаточно ресурсов для начинающих в Интернете о примерах использования хранилища базы данных HTML5 (CRUD)

Я открываю (создаю) свою БД следующим образом:

var db;

$(document).ready(function() 
{

    try
    {
      if (!window.openDatabase) {
            alert('Not Supported -> Please try with a WebKit Browser');
      } else {
          var shortName = 'mydatab';
          var version = '1.0';
          var displayName = 'User Settings Database';
          var maxSize = 3072*1024; //  = 3MB            in bytes 65536
          db = openDatabase(shortName, version, displayName, maxSize);      
          }
    } 
    catch(e) 
    {
      if (e == 2) {

          alert("Invalid database version.");
      } else {
          alert("Unknown error "+e+".");
      }return;
    }
});

ВОПРОС 1: Сколько баз данных я могу создать и использовать на одном домене? ВОПРОС 2. Как удалить (удалить) базу данных. -> Я еще не понял это.

Для создания SQL-запросов вы используете транзакцию:

function nullDataHandler(transaction, results) { }
function createTables(db)
{
  db.transaction(function (transaction)
  {
    //first query causes the transaction to (intentionally) fail if the table exists.
    transaction.executeSql('CREATE TABLE people(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL DEFAULT "John Doe", shirt TEXT NOT NULL DEFAULT "Purple");', [], nullDataHandler, errorHandler);
  });
}

ВОПРОС 3: Как так вышеприведенная транзакция не удалась, если таблица существует? Нужно ли задействовать nullDataHandler для этого? Где в Интернете есть документация, объясняющая API executeSql? Аргументы?

ТНХ

Ответы [ 5 ]

32 голосов
/ 22 апреля 2010

Требуемая вами спецификация - База данных Web SQL .Краткое чтение показывает:

  1. Ограничений нет, хотя, как только ваши базы данных увеличатся до определенного размера (по умолчанию 5 МБ), браузер предложит пользователю выделить больше места.
  2. В текущей спецификации нет способа удалить базы данных.
  3. Функция executeSql () принимает необязательный аргумент обратного вызова ошибки.

HTML5Доктор также имеет хорошее введение.

В дальнейшем, однако, я бы рекомендовал взглянуть на Indexed DB .По существу, веб-SQL был заброшен, так как не существует стандарта для SQL / SQLite.Даже Microsoft одобрила проиндексированную БД.См. Появляется консенсус по ключевым стандартам веб-приложений .

2 голосов
/ 15 февраля 2012
CREATE TABLE IF NOT EXISTS table_name

создаст таблицу table_name, только если ее не существует.

1 голос
/ 22 апреля 2013

Поддерживается в iOS Safari, Chrome и некоторых последних версиях Opera .... Это еще не принято IE и Firefox Вот и все ...... что еще можно спросить, чем местный БД в браузере, который имеет реляционную систему БД ... так что вы можете легко запрашивать его и обрабатывать сложные данные .... что очень сложно в ключевых системах, основанных на вейлах ..

Я помню, что читал , он даже поддерживает до одного гигабайта .Я не уверен ....

Примечание:

1) Я хотел бы упомянуть, что есть IDE под названием Dashcode, который позволяет создавать веб-приложения, которые выглядят как родные для iOS. Даже там используется веб-SQL.

2) на самом деле веб-SQL является реализацией SQLite в браузерах.

3) SQLite наиболее предпочтителен как для iOS, так и для Android в качестве базы данных для нативного кода ..

Недостатки SQLite:

Отсутствие поддержки параллелизма , но это не является проблемой в браузере, так как он будет использоваться одним пользователем за один раз ... Это также относится и к мобильному.

Выводы:

Web Sql заброшен w3 , что печально, поэтому нам нужно изучить другие варианты.

1 голос
/ 25 марта 2013

Используя PersistenceJS, существует API persistence.reset, который очистит базу данных. PersistenceJS Site

В целях разработки / тестирования вы можете просматривать содержимое и удалять webSQL, IndexedDB, файлы cookie и т. Д., Выполняя поиск вашего доменного имени по этому URL в Chrome:

chrome://settings/cookies

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

Было бы замечательно, если бы интерфейс инструментов разработчика Chrome имел возможность щелкнуть правой кнопкой мыши и удалить объект хранения данных на вкладке Ресурсы вместе с проверкой содержимого. Но пока все, что я знаю, это URL настроек / файлов cookie.

1 голос
/ 09 февраля 2013

Я нашел следующие учебные руководства по WebSQL полезными для базовых операций CRUD, так как они содержали примеры и объяснил, что делает код:

И следующие ссылки для SequelSphere (реляционная база данных SQL SQL HTML5 Альтернатива WebSQL, которая работает во всех браузерах, хранение данных в LocalStorage и IndexedDB):

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