Contenido

GearsSQL, facilita tu interacción con Google Gears

2 jun

+ 8

He estado probando Google Gears y he quedado impresionado, sin lugar a dudas estamos ante una visión de Internet.

Para los que no lo sepan aún, Google Gears, es un sistema que mediante una extensión de Firefox o Internet Explorer, nos permite hacer que nuestras aplicaciones puedan funcionar aunque no estemos conectados a Internet. Partiendo de la base que Internet posee una limitación en cuanto a la conexión, si no hay conexión no hay Internet, Google está redefiniendo Internet haciendo que esta limitación sea algo más liviana, ya que necesitaremos de una conexión para actualizar los datos en el servidor y recibir los nuevos en el cliente.

Si le echamos un vistazo al API, veremos la posibilidades de Google Gears nos ofrece:  

  • Posibilidad de cachear y servir (HTML, Javascript, imagenes, etc) en local
  • Posibilidad de almacenar datos en un base de datos local complemente funcional.
  • Posibilidad de usar las opciones anteriores de forma asincrona sin molestar al usuario. 

Imaginemos que vayamos a coger un avión y que antes de embarcar cargamos en nuestro PDA, Portatil, Movil,… todos nuestros ultimos correos (300 nuevos) y desconectamos el dispositivo al entrar a la aeronave. Una vez dentro nos pasamos las X horas de vuelo respondiendo los correos casi sin percatarnos de que no disponemos de conexión a Internet. Una vez en el destino volvemos a conectar y automáticamente la aplicación local actualiza los mails escritos y los envia.

Todo esto será gracia a Google Gears, ya que aún no es posible (o no lo sé) hacer algo parecido con Gmail, o cualquier otro Servicio Web de envio de mails.

Mucha gente se preguntará, ¿por que no lo hace con Outlook ( o derivados)?. Principalmente por que para mi, las aplicaciones en 2 capas están muertas, o apunto. Y la ventaja de disponer de tus correos en cualquier parte del mundo a traves de cualquier dispositivo es el motivo de su muerte.

GearsSQL

GearsSQL es una clase javascript que nos facilitará el uso de la base de datos local, basicamente se trata de una versión en javascript de la famosa ezSQL de Justin Vincent.

SQL de Google Gears

Por motivos de seguridad, Google Gears trata de forma interna los datos que le pasamos a nuestras consultas a base de datos, por ello nuestro SQL se verá un poco modificado al estandard.


//SQL
"insert into table (id, nombre, edad) values (1,'andres',27);"

//Google Gears SQL
"insert into table (?,?,?);",[1,"andres",27]

Como vemos en el ejemplo, debemos pasarle un array con los datos en el mismo orden en el que aparecen los (?) y Google Gears, reemplazará los valores tras pasarles una buena tanda de comprobaciones, con fin de mejorar la seguridad.

Este sistema es opcional, ya que podemos usar el atnterior, pero se recomienda su uso en cualquier caso.

Mini API 

La clase se compone de una serie de métodos con los cuales podremos hacer consultas a la base de datos local, y obtener los datos que en ella hayamos insertado.

init(name);

init() se encarga de iniciar el servicio y la conexión con la base de datos name. El nombre de la base de datos corresponde al recipiente de tablas en las que tenemos nuestros datos

Gears.init("myBaseDeDatos");

query(sql, args);

query() es un método que nos permite realizar una consulta a nuestra base de datos y ella misma comprobará si se trata de una consulta o de cualquier otra acción a la base de datos. Para más información leer get_results();

Gears.query("SELECT * FROM TABLA");

get_results(sql, args);

Con get_results() obtendremos un array con todas las filas involucradas en nuestra consulta, para ello tendremos que lanzar una cosulta SQL y pasarle de forma opcional los arguments de dicha consulta.

Gears.get_results("SELECT * FROM tabla WHERE campo=?",["valor"]);

get_row(sql,args);

get_row() funciona de igual forma que get_results() salvo que como resultados solo devolverá un array con la fila involucrada, por lo tanto será usada para consultas concretas a una línea de la base de datos.

Gears.get_row("SELECT * FROM tabla WHERE camposID=?",["idUnico"]);

get_var(sql, args);

get_vars() nos permite concretar más y llegar a obtener un valor concreto de una consulta devolviendolo en una variable.

var dato = Gears.get_var("SELECT nombre FROM tabla WHERE campoID=?",["idUnico"]);

last_id();

last_id() nos devuelve el valor del ultimo ID insertado de una tabla, en caso de no haberse insertado nada durante la sessión devolverá 0.

var last_id = GearsSQL.last_id();

Ejemplos de uso

//Iniciamos session
GearsSQL.init('myDB');

//Creamos la base de datos
GearsSQL.query("create table if not exists personas (nombre varchar(150), telefono varchar(200), datecreated int, PRIMARY KEY(datecreated))");

//insertamos datos
GearsSQL.query("insert into personas values (?, ?,?);",["andres", "123456789", new Date().getTime()]);
GearsSQL.query("insert into personas values (?, ?,?);",["juan", "987654321", new Date().getTime()]);

/* LEEMOS datos */
//get_results
var res1 = GearsSQL.get_results("SELECT * FROM personas");
alert("RES2: " +res1);

//get_row
var res2 = GearsSQL.get_row("SELECT * FROM personas WHERE nombre = ?;", ["andres"]);

alert("RES: " +res2);

//get_var
var res3 = GearsSQL.get_var("SELECT nombre FROM personas WHERE telefono = ?",["971269259"]);
alert("RES3: " +res3);

Demo

He montado una demo funcional que podeis ver aqui. Requiere Google Gears para funcionar.

Descargar

  • Acabo de revisar el nuevo “Google Gears” y me parece extraordinario, estoy pensando muy seriamente probarlo en una aplicacion real. De todos modos creo que como todos los productos de google supera lo bueno, espero no exagerar ;-)

  • hola a todos, me descargue el google gears y lo instale, en un cibercafe lo tengo todo bien, se puede leer todo sin estar conectado, yo quisiera copiarlo en mi memoria usb para poder leerlo en el pc de mi casa (ya que no tengo internet), no se como hacerlo, intente ir a archivo-guardar, la pagina la guarda pero cuando lo habro no se ve nada, alguien podria ayudarme

  • #2 Quizas una opción sería la de instalarte la versión de Firefox para USB y despues instalar Gears como una extensión sobre él.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.