Una forma de fácil y corta de explicarlo, es decir;
Que es una base de datos que se almacena de forma temporal en el cache del navegador.
NOTA:
Esta base de datos solo no esta soportada por IE ni FireFox
Los datos almacenados son almacenados en la cache del navegador, por lo que al vaciar la cache también se elimina la base de datos
function supports_local_database() {
return !!window.openDatabase;
}
//true, tiene soporte
var size = 5*1024*1024;
// "Nombre","Version","Descripcion","size","success calback"
db = openDatabase("DB1", "1.0","prueba", size, function () {
console.log("La base de datos se ha sido creada");
});
//Iniciamos la Transaccion
db.transaction(function(tx) {
tx.executeSql("Query",
[] /*Parametros*/,
SuccessCallback /*Función exitosa*/,
errorCallback /*Función error*/);
});
//Iniciamos la Transaccion
db.readTransaction(function(tx) {
tx.executeSql("Query",
[] /*Parametros*/,
SuccessCallback /*Función exitosa*/,
errorCallback /*Función error*/);
});
Lectura y escritura
Insert, Update y Delete
Solo lectura
Select
Como podemos ver existen dos tipos de transacciones:
La primera es de lectura-escritura, mientras que la segunda es de sólo lectura.
Dentro de estas transacciones nos encontramos con executeSql, a la cual se le pasa primero el query, seguidamente de un array con los valores de los argumentos del query y finalmente una función de callback y otra de callback para el caso de que existan errores.
//Iniciamos la Transaccion
db.transaction(function(tx) {
tx.executeSql("create table if not exists persona("+
"id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"+
"nombre TEXT NOT NULL,"+
"direccion TEXT NULL,"+
"telefono TEXT NULL"+
")",
function(){
console.log("tabla creada correctamente");
},
function(){
console.log("ocurrio un error en la sintaxis");
}
);
});
function InsertItem() {
var nombre = document.getElementById('txtNombre').value;
var telefono = document.getElementById('txtTelefono').value;
var direccion = document.getElementById('txtDireccion').value;
db.transaction(function(tx) {
tx.executeSql("INSERT INTO persona VALUES (?, ?, ?)",
[nombre, telefono, direccion],
SelectAll());
});
};
function SelectAll(id) {
db.readTransaction(function(tx) {
tx.executeSql("Select * from persona id = ?",
[id],
CargarContenido
);
});
};
// ("Transaction", "Resultado")
function CargarContenido (tx,rs) {
var contenido ="";
for (var i = 0, size = rs.rows.length-1; i <= size ; i++) {
contenido = contenido + "<tr>"+
"<td>"+rs.rows.item(i).id+"</td>"+
"<td>"+rs.rows.item(i).nombre+"</td>"+
"<td>"+rs.rows.item(i).direccion+"</td>"+
"<td>"+rs.rows.item(i).telefono+"</td>"+
"</tr>";
}
console.log(contenido);
document.getElementById('tblPersonasBody').innerHTML = contenido;
}