HTML 5

HTML 5 има много нови функции, които позволяват на уеб разработчиците да създават по-богати и по-мощни приложения. Тези функции включват нови начини за съхраняване на данни на клиента, като уеб съхранение (поддържано в IE8) и уеб SQL база данни.

Освен това, ако уеб хранилището е фокусирано върху съхраняването на двойки ключ-стойност, тогава в случая на уеб SQL база данни имаме пълноправен sqlite (във всички текущи реализации се използва този конкретен двигател на базата данни, което е проблем при стандартизацията).

Връзка с база данни.

Свързването към базата данни е много просто:

db = openDatabase("ToDo", "0.1", "Списък с елементи за вършене.", 200000);

Този код създава обект, представляващ базата данни, и ако база данни със същото име не съществува, тогава тя също се създава. Аргументите включват името на базата данни, версията, показваното име и приблизителния размер. Освен това е важно да се отбележи, че приблизителният размер не е ограничение. Действителният размер на базата данни може да варира.

Можете да оцените успеха на връзката с базата данни, като проверите db обекта за null:

Изпълнение на заявки.

Всъщност самата SQL заявка може да бъде изпълнена чрез извикване на функцията executeSql на обекта на транзакция. Необходими са 4 аргумента:

  • низ на SQL заявка
  • масив от параметри на заявката (параметрите се заместват с въпросителни знаци в SQL заявка)
  • функция, която се извиква, когато заявката е успешна
  • функция, която да бъде извикана, ако възникне грешка при изпълнение на заявката
Пример за това как работи функцията executeSql е по-долу:

db.transaction(function(tx) tx.executeSql("SELECT COUNT(*) FROM ToDo", [], function(result)<>, function(tx, error)<>); >); Некасега нека променим кода, така че ако е невъзможно да се избере от таблицата "ToDo" (която все още не съществува), тази таблица се създава.

db.transaction(function(tx) tx.executeSql("SELECT COUNT(*) FROM ToDo", [], function (result) < alert('dsfsdf') >, function (tx, error) tx.executeSql("CREATE TABLE ToDo (id REAL UNIQUE, label TEXT, timestamp REAL)", [], null, null); > ;)>);

Вмъкване на данни.

Нека вмъкнем нов ред в таблицата "ToDo". За тези, които са запознати със синтаксиса на SQL, примерът по-долу ще звучи много познато:

db.transaction(function(tx) tx.executeSql("INSERT INTO ToDo (label, timestamp) values(?, ?)", ["Купете iPad или HP Slate", new Date().getTime()], null, null); >); Първият въпросителен знак в SQL заявката се заменя с „Купете iPad или HP Slate“, а вторият с клеймо за време. В резултат на това ще бъде изпълнена следната заявка: INSERT INTO ToDo (етикет, времево клеймо) стойности („Купете iPad или HP Slate“, 1265925077487)

Работа с резултати от заявки.

Резултатът от изпълнението на заявка за избор на данни съдържа набор от редове и всеки ред съдържа стойностите на колоните на таблицата за даден ред.

Можете да получите достъп до всеки ред от резултата, като извикате функцията result.rows.item(i), където i е индексът на реда. Освен това, за да получите необходимата стойност, трябва да се обърнете към конкретна колона по име - result.rows.item(i)["label"].

Следният пример отпечатва резултата от заявка към база данни към страница:

db.transaction(function(tx) tx.executeSql("SELECT * FROM ToDo", [], function(tx, result) for(var i = 0; i

Заключение.

Използването на уеб SQL база данни е мощно, но не се увличайте. Ако проблемът може да бъде решен с помощта на уеб хранилище, това е по-добреда го използвам.

Можете да намерите повече информация по тази тема в съответния раздел на уебсайта на w3c. Освен това ORM библиотеките вече са започнали да се разработват за уеб SQL базата данни. Пример за такава библиотека е тук.

Hardcore conf в C++. Каним само професионалисти.