Java

       

Safari(WebKit). Database storage.


Дальше всех в поддержке стандарта хранения пошли разработчики WebKit.

В Safari реализовано локальное хранение в базе данных SQLite.

Набор операций включает в себя CREATE TABLE, INSERT, SELECT, REPLACE, индексы и многое другое, с рядом ограничений безопасности (например, нет LOAD DATA INFILE).

В отличие от DOM Storage и userData, этот интерфейс асинхронный. Все функции запросов к базе данных принимают в качестве аргументов две функции: callback - для обработки результатов и errback - для обработки ошибок.

Когда запрос завершается, вызывается один из этих обработчиков.

Продемонстрируем это на тестовой базе.

db = openDatabase("Test", "1.0", "Webkit Storage Example")

db.transaction(function(tx) {

tx.executeSql(

"CREATE TABLE IF NOT EXISTS test (key TEXT, value TEXT, unique(key))", [], function(tx, result) { alert("Success!") }, function(tx, error) { alert("Failure: "+error.message }

)

})

Сложновато с первого взгляда?

db.transaction создает транзакцию и передает ее функции-аргументу.

Код внутри function(tx) выполняется в одной транзакции.

Вызов tx.executeSql принимает аргументы:

  • Запрос
  • Аргументы подстановки
  • Обработчик результата
  • Обработчик ошибки
  • Следующий пример демонстрирует обработку запроса.

    db.transaction(function(tx) {

    tx.executeSql("SELECT value FROM test WHERE key=?", [key], function(tx,result) {



    alert("Количество результатов: "+result.rows.length)

    alert("Поле value первого результата: "+ result.rows.item(0).value)

    }, function(tx, error) { alert("Error!") }

    )

    })



    Содержание раздела