HTML 5
HTML 5 има много нови функции, които позволяват на уеб разработчиците да създават по-богати и по-мощни приложения. Тези функции включват нови начини за съхраняване на данни на клиента, като уеб съхранение (поддържано в IE8) и уеб SQL база данни.
Освен това, ако уеб хранилището е фокусирано върху съхраняването на двойки ключ-стойност, тогава в случая на уеб SQL база данни имаме пълноправен sqlite (във всички текущи реализации се използва този конкретен двигател на базата данни, което е проблем при стандартизацията).
Връзка с база данни.
Свързването към базата данни е много просто:
db = openDatabase("ToDo", "0.1", "Списък с елементи за вършене.", 200000);
Този код създава обект, представляващ базата данни, и ако база данни със същото име не съществува, тогава тя също се създава. Аргументите включват името на базата данни, версията, показваното име и приблизителния размер. Освен това е важно да се отбележи, че приблизителният размер не е ограничение. Действителният размер на базата данни може да варира.
Можете да оцените успеха на връзката с базата данни, като проверите db обекта за null:
Изпълнение на заявки.
Всъщност самата SQL заявка може да бъде изпълнена чрез извикване на функцията executeSql на обекта на транзакция. Необходими са 4 аргумента:
- низ на SQL заявка
- масив от параметри на заявката (параметрите се заместват с въпросителни знаци в SQL заявка)
- функция, която се извиква, когато заявката е успешна
- функция, която да бъде извикана, ако възникне грешка при изпълнение на заявката
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++. Каним само професионалисти.