La API Web SQL brinda la posibilidad de acceder a una base de datos local en el cliente (navegador del usuario) desde Javascript.

A día de hoy, es soportada desde Chrome/Chromium/Iron 4, Opera 10.5 y Safari 4. A nadie le sorprender que Internet Explorer 8 no lo soporte, aunque a más de uno le sorprenderá que Firefox/SeaMonkey siga apostando por la alternativa no estándar de MDM

Típicamente Web SQL está implementado sobre SQLite, que hace que sea ligero y rápido.

De momento no hay demasiados sites que aprovechen Web SQL, aunque dado lo sencillo que es de usar, preveo una paulatina migración de base de datos de servidor a cliente, al menos en aquellos casos que tenga sentido.

Como lo más sencillo, es verlo directamente sobre un fragmento de código, veamos que pinta tiene esta API.

Para ello he creado un sencillo programa, que puedes acceder aquí (1 Kb. en formato HTML), que crea una tabla SQLite para una agenda telefónica, la llena con 100 registros, y a partir de ahí, los cuenta, y los muestra. Dentro de la simplicidad del pequeño snippet, se muestra como conectar, crear la BD, insertar, consultar, contar, y por supuesto, comprobar si el navegador soporta Web SQL:

if (window.openDatabase)
{
var moDb=openDatabase('WebSQL', '1.0', 'HTML5 WebSQL demo', 128*1024);

moDb.transaction(
function(oTransaction)
{
oTransaction.executeSql('DROP TABLE IF EXISTS t_mstr_agenda;');
oTransaction.executeSql('CREATE TABLE t_mstr_agenda (agenda_nombre TEXT, agenda_telefono TEXT);');
for (var iCont=0; iCont<100; iCont++)
{
oTransaction.executeSql('INSERT INTO t_mstr_agenda (agenda_nombre, agenda_telefono) VALUES (\'Nombre ' + iCont + '\', \'Telefono ' + iCont + '\');');
}

oTransaction.executeSql('SELECT * FROM t_mstr_agenda', [], function (oTransaction, oResults)
{
var iLen=oResults.rows.length;
var sRes='';
for (var iCont=0; iCont<iLen; iCont++)
{
sRes=sRes + oResults.rows.item(iCont).agenda_nombre + ': ' + oResults.rows.item(iCont).agenda_telefono + '\n';
}
alert(sRes);
});
}
);
}
else
{
alert('Web SQL no soportado.');
}