Micaela 19 de noviembre de 2009 a las 11.35
   Imprimir artículo
elWebmaster.com

C贸mo manejar bases de datos SQL en Palm webOS con HTML5


palm-databasePalm WebOS incluye soporte para el objeto Database de HTML5 para crear, actualizar y consultar una base de datos SQL.

Las interfaces del Database HTML 5 son asincr贸nicas, lo que requiere el uso de callbacks para gran parte del manejo de base de datos.

A continuaci贸n, explicamos c贸mo manejar una base de datos SQL en Pam webOS con HTML5.

La especificaci贸n HTML 5 incluye extensiones para el almacenamiento estructurado del lado de cliente, incluyendo soporte para los objetos Storage y Database. Palm webOS no es compatible con el objeto Storage, un listado de pares de nombres/valores que surgi贸 del objeto Storage del DOM de Firefox, pero s铆 es compatible con el objeto Database.

El m茅todo openDatabase() crear谩 una nueva base de datos o abrir谩 una existente, devolviendo un objeto Database:

  1. this. db = openDatabase("myDB", 1, "My DB", 10000);

Los argumentos son los siguentes:

  1. Property         Required     Descripci贸n
  2. Name             Required     Nombre de la base de datos
  3. version          Optional     Target version, o indefinida si ninguna versi贸n es aceptable
  4. displayName      Optional     Aplicaci贸n definida, no se usa en webOS
  5. estimatedSize    Optional     Informa al webOS del tama帽o pretendido para preguntar por cualquier
  6.                               l铆mite del sistema al momento de la creaci贸n en lugar de durante el uso

La propiedad ‘version’ de la base de datos representa la versi贸n del esquema, lo que permite migrar la base de datos f谩cilmente a trav茅s de cambios de esquema. Si la aplicaci贸n especifica un nombre de base de datos y un n煤mero de versi贸n, ambos tienen que coincidir con una base de datos existente para que la base de datos abierta funcione, de lo contrario, ser谩 creada una nueva base de datos.

Una vez que la base de datos est谩 abierta, ya se pueden ejecutar transacciones, utilizando tanto transaction() para leer/escribir las transacciones o readTransaction() para transacciones de s贸lo lectura. Los m茅todos de transacci贸n especificar谩n de uno a tres callbacks:

  • Transaction callback (de transacci贸n)
  • Error callback (de error)
  • Success callback (de 茅xito)

El callback de transacci贸n es el m谩s importante, incluye los pasos de transacci贸n que deseas ejecutar utilizando un m茅todo executeSQL(), que acepta un query string de SQL como argumento, junto con callbacks de ‘error’ y ‘success’.

Por ejemplo, el siguiente segmento de c贸digo llama al m茅todo de transacci贸n con una funci贸n literal que incluye dos m茅todos executeSQL(), siendo el 煤ltimo el que especifica un callback de ‘茅xito’, this.successHandler(), y uno de ‘error’, this. errorHandler():

  1. MyAssistant. prototype.activate = function()    {
  2.  
  3. // Aqu铆, espacio para m谩s c贸digo
  4.  
  5. this. db. transaction( (function (transaction) {
  6.             transaction.executeSql('A BUNCH OF SQL', []);
  7.             transaction.executeSql('MORE SQL', [], this.successHandler.bind(this),
  8.                this.errorHandler.bind(this));
  9.      }). bind(this);
  10.  
  11. // Aqu铆, espacio para m谩s c贸digo
  12.  
  13. MyAssistant. prototype.successHandler = function(transaction, SQLResultSet) {
  14. // Post procesamiento con resultados
  15. };
  16. MyAssistant. prototype.errorHandler = function(transaction, error)  {
  17.     Mojo. Log. Error('Ha ocurrido un error',error.message);
  18.     // Aqu铆 el control de errores
  19. };

El objeto de la transacci贸n recibe el handler de ‘茅xito’, m谩s un objeto SQLResultSet como argumento. Los atributos del objeto resultante se describen a continuaci贸n.

  1. Atributos             Descripci贸n
  2. insertID               ID de fila, de la fila que fue insertada en la base de datos, o la 煤ltima
  3.                        de m煤ltiples files, en el caso de que se hayan insertado filas
  4. RowsAffected           N煤mero de filas afectadas por la declaraci贸n SQL
  5. SQLResultSetRowList    Filas resultantes de la consulta, si hay

Una nota sobre la creaci贸n de grandes bases de datos

palm-webosPor default, Palm webOS almacena bases de datos dentro de un espacio de tama帽o limitado, raz贸n por la cual las bases de datos HTML 5 est谩n limitadas a un m谩ximo de 1 MB. El volumen de almacenamiento de la Palm Pre est谩 en la partici贸n de almacenamiento masivo o el almacenamiento accesible por USB, reservado para multimedia.

Puedes almacenar tu base de datos HTML 5 en la partici贸n de almacenamiento masivo, donde no se est谩 sujeto a un tama帽o m谩ximo m谩s que a la cantidad de memoria disponible. Para esto, debes especificar el nombre de base de datos con un prefijo, como en:

  1. openDatabase( "ext: mydbname", ... );

El “ext:” ser谩 mapeado por el sistema a la partici贸n masiva de media de la Palm Pre. En el futuro, se le dar谩 el mapeo adecuado en dispositivos m谩s modernos.

Fuente: O’Reilly Answers


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder