PathOfNeo
PathOfNeo

Reputation: 1089

HTML5 database storage (SQL lite) - few questions

Hy there,

I can't find enough beginner resources on the web about HTML5 database storage usage examples (CRUD)

I'm opening(creating) my DB like this:

var db;

$(document).ready(function() 
{

    try
    {
      if (!window.openDatabase) {
            alert('Not Supported -> Please try with a WebKit Browser');
      } else {
          var shortName = 'mydatab';
          var version = '1.0';
          var displayName = 'User Settings Database';
          var maxSize = 3072*1024; //  = 3MB            in bytes 65536
          db = openDatabase(shortName, version, displayName, maxSize);      
          }
    } 
    catch(e) 
    {
      if (e == 2) {

          alert("Invalid database version.");
      } else {
          alert("Unknown error "+e+".");
      }return;
    }
});

QUESTION 1: How many databases can i create and use on one domain? QUESTION 2. How to delete (drop) a database. -> i have not figured this out yet.

To create sql queries you use transaction:

function nullDataHandler(transaction, results) { }
function createTables(db)
{
  db.transaction(function (transaction)
  {
    //first query causes the transaction to (intentionally) fail if the table exists.
    transaction.executeSql('CREATE TABLE people(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL DEFAULT "John Doe", shirt TEXT NOT NULL DEFAULT "Purple");', [], nullDataHandler, errorHandler);
  });
}

QUESTION 3: How so is the above transaciton failed if a table exists? Is the nullDataHandler involved to do this? Where on the web is there documentation explaining the executeSql API? Arguments?

thx

Upvotes: 26

Views: 62942

Answers (5)

Durai Amuthan.H
Durai Amuthan.H

Reputation: 32310

It is supported on iOS safari,chrome and some latest version of opera....it's not yet adopted by IE and Firefox that's it......what more one can ask than local db on browser which has relational db system...so u can query it easily and handle complex data....which is very tougher in key vale based systems..

I remember reading it even supports upto one gb.i am not sure....

Note:

1)I'd like to mention one point there is a IDE called Dashcode which let's u build web apps that looks like iOS native.even there also web SQL is used.

2)actually web SQL is a implementation of SQLite on browsers.

3)SQLite is most prefered in both iOS and android as db for native code..

The drawbacks of SQLite:

The Lack of concurrency support but which is not a problem in browser as it's gonna be used by single user at a time..this is a case also in mobile.

Conclusions:

Web Sql is abandoned by w3 that's a sad thing so we've to explore other options.

Upvotes: 1

i_a
i_a

Reputation: 2763

Using PersistenceJS there is a persistence.reset API which will wipe the database clean. PersistenceJS Site

For developing / testing purposes, you can view content and delete webSQL, IndexedDB, cookies, etc by searching for your domain name at this URL in Chrome:

chrome://settings/cookies

There, you can delete all the storage for a domain or just certain local storage entities. Yes, the URL implies just 'cookies', but the interface at this URL includes all types of offline storage.

It would be great I think if the Chrome developer tools interface had the ability to right-click and delete a data storage entity in the Resources tab along with inspecting the content. But for now, all I know of is the settings/cookies URL.

Upvotes: 1

John Fowler
John Fowler

Reputation: 3281

I found the following WebSQL tutorials helpful for basic CRUD operations, as they contained examples, and explained what the code was doing:

And the following links for SequelSphere (an HTML5 JavaScript SQL Relational Database Alternative to WebSQL that works in all browsers, storing data in LocalStorage and IndexedDB):

Upvotes: 1

Praveen Vijayan
Praveen Vijayan

Reputation: 6761

CREATE TABLE IF NOT EXISTS table_name

will create a table table_name only if if does not exist.

Upvotes: 2

Jeffery To
Jeffery To

Reputation: 11936

The spec you're looking for is Web SQL Database. A quick reading suggests:

  1. There is no limit, although once your databases increase beyond a certain size (5MB seems to be the default), the browser will prompt the user to allow for more space.
  2. There is no way, in the current spec, to delete databases.
  3. The executeSql() function takes an optional error callback argument.

HTML5 Doctor also has a good introduction.

Going forward, though, I'd recommend looking at Indexed DB. Web SQL has essentially been abandoned since there is no standard for SQL / SQLite. Even Microsoft has endorsed Indexed DB. See Consensus emerges for key Web app standard.

Upvotes: 32

Related Questions