Web SQL Database - це API для роботи з базою даних SQLite.
WebSql Database дозволяє працювати з базою даних SQLite на стороні користувача (браузера) за допомогою JavaScript.
Не всі браузери підтримують Web SQL Database, так як Web SQL не являється стандартом.
За політикою безпеки браузера доступними є бази даних лише поточного домена.
Для того щоб підключитися до (відкрити) бази даних (БД) використовується метод openDatabase() в якому вказується назва БД, версія бази даних і запланований максимальний розмір у байтах.
Зазвичай браузери дозволяють максимальний об'єм БД для домену 5 Мб. Якщо потрібно більше ніж 5 Мб тоді браузер може запитати дозволу у користувача.
Метод openDatabase підключається до БД або створює нову якщо вказаної бази даних немає і повертає об'єкт Database відкритої БД.
Зверніть увагу що у Web SQL Database всі дії з базою даних відбуваються асинхроно. Усі методи для роботи з БД у Web SQL приймають функцію, яка виконуюєть асинхроно приймаючи необхідні дані у якості параметрів функції.
Після підключення БД необхідно створити транзакцію для виконання запитів до бази даних.
Транзакція (transaction) - це група послідовних запитів (операцій) до бази даних. Транзакція виконується успішно дотримуючись цілісність даних у БД незалежно від інших транзакцій або може не виконатася взагалі.
У Web SQL можна відкрити транзакцію для читання і запису за допомогою методу Database.transaction(), а також лише для читання - Database.readTransaction().
Обидва методи приймають функцію в якості параметра, яка виконується асинхроно після створення транзакції.
Після створення транзакції виконуються запити до бази даних за допомогою методу SQLTransaction.executeSql().
Зверніть увагу що кожного разу необхідно створювати таблицю у базі якщо її немає. Для цього необхідно виконати SQL запит: "CREATE TABLE IF NOT EXISTS `назва таблиці` (`назва стовбців`);" :
if(window.openDatabase){
var db = openDatabase("mydb","","test db", 2097152);
db.transaction(function(tx){
//створюємо таблицю test якщо її немає
tx.executeSql('CREATE TABLE IF NOT EXISTS `test` (`id` INTEGER PRIMARY KEY , `name`, `text`);');
// виконуємо подальші запити до таблиці...
});
}else alert('Ваш браузер НЕ підтримує openDatabase.');
Зберігається база даних у системному католозі браузера.
Зазвичай при очищені кеш даних веб-перегляду браузера видаляються і бази даних Web SQL.
function queryDB(tx){
//виконуємо запит sql для отримання даних таблиці
tx.executeSql('SELECT * FROM test;',[], querySuccess, errorCB );
}
function querySuccess(tx, results){
//обробка результату запиту
var len = results.rows.length;
var s='<h3>таблиця test має рядків: ' + len+'</h3>';
s+='<table><tr><th>id</th><th>name</th><th>text</th></tr>';
for(i=0; i<len; i++)
s+="<tr><td>" + results.rows.item(i).id + "</td><td>" + results.rows.item(i).name+'</td><td>'+results.rows.item(i).text+'</td></tr>';
s+='</table>';
document.getElementById('test').innerHTML=s;
}
function errorCB(t,err) { prompt("Виникла помилка при SQL запиті: ",err.message); }
if(window.openDatabase){
var db = window.openDatabase("test_db", "", "Web SQL Databade", 200000);
db.transaction(function(tx){
//створюємо таблицю якщо її немає
tx.executeSql('CREATE TABLE IF NOT EXISTS `test` (`id` INTEGER PRIMARY KEY, `name`, `text`);');
//додаємо дані у таблицю
tx.executeSql('INSERT INTO `test` (`name`, `text`) VALUES ("Web SQL"," Web SQL - база даних JavaScript '+Date()+'");');});
db.readTransaction(queryDB, errorCB);
}else alert('Ваш браузер НЕ підтримує Web SQL Database');