
- Image by justinsomnia via Flickr
Nu we toch lekker bezig zijn met HTML 5, wil ik in mijn derde artikel ingaan op de locale databaseStorage mogelijkheden. Deze methode kan complexere data opslaan en verweken aan de gebruikerskant. Het is in principe een SQLite implementatie binnen de browser van de client. Omdat deze manier van opslag nog in draft is kan er nog veel gebeuren, daarom behandel ik de globale basis zoals hij nu bekend is.
Andere HTML5 artikelen
Heb je ze nog niet gelezen? dan raad ik je aan de twee eerdere artikelen over het canvas element en local storage te lezen op Netsetters blog.
databaseStorage compatible browsers
Op dit moment kunnen maar een beperkt aantal browsers met de locale database storage overweg. Google’s Chrome (>3), Safari (> 3.2), Opera (>10.5). Bij de release van Firefox 4 in November zal ook de ondersteuning voor locale database toegang meekrijgen. En als we heel veel geluk hebben zou er een kleine kans bestaan dat de functionaliteit later aan versie 9 van Internet Explorer wordt toegevoegd.
Niet compatible, waarom toch gebruiken?
Het is nou eenmaal zo dat ‘maar’ de helft van de browser deze manier van opslag ondersteund, net als met vele andere HTML5 specifieke eigenschappen. Ondanks deze magere ondersteuning kan er nu al winst worden gehaald uit de techniek. Op de Iphone en Android telefoons zijn deze technieken namelijk al geheel beschikbaar gezien deze met Webkit browsers werken (safari en chrome). De tweede reden is dat de nu inspringen de kennis straks vergroot, ook zal het gebruik van de techniek door ontwikkelaars de ondersteuning van HTML5 hoger op de prioriteitenlijst bij de browser-ontwikkelaars komen te staan. want als de consument echt eerlijk mocht kiezen tussen verschillende gratis browsers, dan gebruik je toch een browser die de nieuwe technieken ondersteund? Ook kan de combinatie van oude en nieuwe techniek al een voordeel hebben.
De eerste stap van databaseStorage, een database aanmaken
Met openDatabase() kunnen we een database openen of creëren. Deze JavaScript functie neemt 4 argumenten aan.
- De database naam
- De database versie
- De leesbare naam van de database
- De grote van de database in bytes (ongeveer)
Om een database te creëren en browsers die het niet kunnen af te vangen kunnen we de volgende code gebruiken:
var db;
try {
if (window.openDatabase) {
db = openDatabase("DatabaseTest", "1.0", "HTML5 Database voorbeeld", 200000);
if (!db)
alert("Kan database niet openen: verkeerde versie of over het limiet heen");
} else
alert("Kan database niet aanmaken, uw browser ondersteund geen databaseStorage");
} catch(err) { }
Query uitvoeren op locale database
Om een query uit te voeren gebruiken we de transaction() methode, deze heeft 1 t/m 3 argumenten, namelijk:
- transaction callback
- error callback
- success callback
De transactie bestaat uit een anonieme functie met executeSQL() methode. Deze heeft tot 4 argumenten, namelijk:
- SQL statement
- Argumenten
- SQL callback
- Error Callback
Schematisch gebeurd er dus het volgende:
db.transaction(function(tx)
{
tx.executeSql('SELECT * FROM MyTable WHERE CategoryField = ?',
[ selectedCategory ],
function (tx, rs) { displayMyResult(rs); },
function (tx, err) { displayMyError(err); } );
});
Waar displayMyResult en displayMyError de succes en error functies zijn.
Voorbeelden, een tabel aanmaken
db.transaction(function (tx)
{
tx.executeSql("CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT, timestamp REAL, left TEXT, top TEXT, zindex REAL)", [], function(result) {loadNotes();
})
});
Een rij toevoegen
db.transaction(function (tx)
{
tx.executeSql("INSERT INTO Adressen (id, naam, adres, woonplaats) VALUES (?, ?, ?, ?)", [id, naam, adres, woonplaats]);
});
Een rij verwijderen
De meest korte uitvoering, zonder error en succes handlers
db.transaction(function(tx)
{
tx.executeSql("DELETE FROM WebKitStickyNotes WHERE id = ?", [note.id]);
});
Een select uitvoeren
Een select maken uit tabelnaam MyTable waar de categorie gelijk is aan selectedCategory
db.transaction(function(tx)
{
tx.executeSql('SELECT * FROM MyTable WHERE CategoryField = ?',
[ selectedCategory ],
function (tx, rs) { displayMyResult(rs); },
function (tx, err) { displayMyError(err); } );
});
Meer lezen
Meer kan je vinden op de pagina van het W3C met de offline web applicaties notitie.
Ook een goede aanvullende uitleg is te vinden op de website van creativepark
Related articles by Zemanta
- How to build a html5 websites.v1 (slideshare.net)
- Five Things IE9 is (Actually) Doing Right (sixrevisions.com)
- Google official reaffirms HTML5 readiness (infoworld.com)
- The State of HTML5 Local Data Storage (rethink.unspace.ca)
Popularity: 41% [?]
Tags: Google, HTML5, Internet Explorer, JavaScript, Mozilla Firefox, Opera, SQLite, WebKit
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=9c89531e-b77e-468d-aa3c-31046f7f1056)
