webDB czyli SQLite w przeglądarce

Data publikacji: 2011-05-13 , Wyświetleń: 1495

db logo Swego czasu pisałem o takim rozwiązaniu jak Web SQL. Pomimo że nie jest ono wspierane prze W3C jest to dość przydatne rozwiązanie i na chwile obecna nie mające swojego odpowiednika w postaci innej technologi (indexedDB jest w fazie draftu). Postanowiłem ogarnąć trochę sprawę i napisać sobie klasę JavaScript do obsługi tej technologii.

 

Jak tego używać?

Aktualizacja: 2011-05-17

Nie jest to skomplikowana sprawa. Ściągamywersja min plik skryptu JS. Dołączamy w strukturze strony i piszemy nasza obsługę bazy.

 

Opis funkcji

 

Inicjalizacja

webDB.init('dbtest', 100 * 1024 * 1024);

 

Zapytanie

webDB.query('SELECT [fields] FROM test WHERE id>?', ['1'], function(trans, result){ 
    // parse result
    console.log(result.rows.item(0));
});

 

Tworzenie tabeli

webDB.createTable('test', [
     {name:'id', type: 'integer'},
     {name:'text', type: 'text'}
 ]);

 

Insert

webDB.insert('test',{id:'2', text:'gggg'});

Select

webDB.select('test', {
     fields: '*',
     where: {sql: 'id = ?', params:[2]}
     handler: function(a){console.log(a);} 
 });

 

Update

webDB.update('test',
    {id:'11'},
    {sql:'id=?', params:['10']}
);

 

Delete

webDB.del('test',
    {sql:'id=?', params:['2']}
);

 

Listenery

Czyli coś na miano zdarzeń. Dostępne są 2:

  1. onError: function(error, message) - po wystąpieniu błędu,
  2. onQuery: function(trans, result, sqlQuery) - po zapytaniu

Dodajemy je za pomocą funkcji addListener.

webDB.addListener('onError', function(a,b,c){
    console.log(a);
    console.log(b);
    console.log(c);
});

 

Last insert ID

CZyli ID ostatnio dodanej pozycji

webDB.insertID('lastID');

 

Lista tabel

Listę stworzonych tabel możemy odczytać z obiektu tables.

for(var tab in webDB.tables) {
    console.log(tab);
    //tab.name  tab.type
} 

Znajdują się tam tylko tabele stworzone za pomocą webDB, aby pobrać listę tabel z bazy trzeba wykonać już zapytanie.

 

Lista zmian

  • 2011-05-19
    • w onQuery dodano 3 parametr sql - tekst zapytania sql
    • createTable, insert, update, del - 3 parametr to resultCallback
    • podniesienie wersji do 1.0.1
    • poszedł plik spakowany (min)
  • 2011-05-27
    • zmiana struktury listenerów, teraz jedno zdarzenie może mieć wiele funkcji obsługi (funkcja addListener wygląda tak samo jak we wcześniejszych wersjach)
    • dodanie funkcji insertID (pobieranie ostatnio dodanego ID)

Podsumowanie

Nie ma się co rozpisywać nad działaniem. To tylko prosta nakładka na WebSQL ale dość wygodna i funkcjonalna. Klasa webDB posiada jeszcze parę możliwości tutaj nie opisanych ale nie są one jakieś kluczowe z punktu widzenia operacji na bazie danych. Szkoda że zadziała to tylko w Chrome, Safari i Operze.

Tagi: webdb, chrome, safari, opera, websql, sql, javascript