База данных Web SQL - это API веб-страницы для хранения данных в базах данных, которые можно запрашивать с помощью SQL.
Спецификация основана на SQLite. База данных Web SQL поддерживается не всеми браузерами - этот стандарт в настоящее время объявлен устаревшим W3C и альтернативой этому является IndexedDB.
Тем не менее, её можно использовать в поддерживаемых браузерах, таких как Safari, Chrome, Opera и Edge.
Создадим БД и таблицу средствами JS:
var db;
// создаем базу с параметрами - имя, версия, описание, требуемое хранилище
db = window.openDatabase('test_db', '1.0', 'Test DB', 1024*1024)
// транзакция
db.transaction(function (tx) {
// удаляем существующую таблицу
tx.executeSql('DROP TABLE IF EXISTS USERS');
// Create the new table with required fields, define the primary key
tx.executeSql('CREATE TABLE IF NOT EXISTS USERS(CARD TEXT PRIMARY KEY, NAME TEXT, AGE INTEGER, EMAIL TEXT)', [], function(tx, result) {
console.log(result);
console.log('Таблица успешно создана');
}, errorHandler);
});
// обработчик ошибок
function errorHandler(transaction, error) {
console.log('Ошибка: ', error.message);
console.log('Код ошибки: ', error.code);
return false;
}
Поместим данные в базу:
db.transaction(function (tx) {
tx.executeSql('INSERT INTO USERS(CARD, NAME, AGE, EMAIL) VALUES (?,?,?,?)', ['444-44-4444', 'Иван', 35, 'ivan@mail.com'], function(tx,result) {
console.log('Данные добавлены успешно', result.insertId);
}, errorHandler);
tx.executeSql('INSERT INTO USERS(CARD, NAME, AGE, EMAIL) VALUES (?,?,?,?)', ['555-55-5555', 'Петр', 32, 'petr@mail.com'], function(tx,result) {
console.log('Данные добавлены успешно', result.insertId);
}, errorHandler);
});
Таблицу БД теперь можно увидеть в поддерживающих Web SQL браузерах, в частности в панели разработчика (F12 в Chrome) во вкладке "Application":
Считаем данные с базы:
db.readTransaction(function (tx) {
tx.executeSql('SELECT * FROM USERS', [], function (tx, results) {
var len = results.rows.length;
for (var i = 0; i < len; i++) {
console.log('card: ', results.rows.item(i).CARD);
console.log('name: ', results.rows.item(i).NAME);
console.log('age: ', results.rows.item(i).AGE);
}
}, errorHandler);
});
Обновим данные:
db.transaction(function (tx) {
tx.executeSql('UPDATE USERS SET AGE=? WHERE CARD=?', [45, '444-44-4444'], function(tx,result) {
console.log('Данные обновлены успешно', result);
}, errorHandler);
});
Удалим данные:
db.transaction(function (tx) {
tx.executeSql('DELETE FROM USERS WHERE CARD=?', ['444-44-4444'], function(tx,result) {
console.log('Данные удалены успешно', result);
}, errorHandler);
});