2012-01-24 5 views
7

Estoy un poco confundido acerca de las limitaciones de usar SQLite en una aplicación Phonegap-Native en iOS.Base de datos SQLite en PhoneGap/iOS - Más de 5 mb posibles

Puede leer muchas publicaciones sobre el límite de almacenamiento de 5mb y el hecho de que su Ipad puede solicitarle que aumente el almacenamiento.

Ahora he logrado insertar cerca de 7000 filas en mi base de datos SQLite, utilizando la API Phonegap-Storage habitual. El archivo db correspondiente tiene un tamaño de 26 MB. Una siguiente instrucción de selección "seleccionar * desde" funcionaba y mostraba el contenido de la base de datos. Lo he hecho en el simulador y en el dispositivo. No recibí la pregunta para aumentar el almacenamiento.

¿Cómo puede ser eso? ¿Entiendo mal algo? ¿Existe realmente un límite de 5 mb para dbs SQLite en Phonegap? estoy usando Phonegap 1.2 y iOS 5.

Respuesta

3

descubrí por mí mismo:

Tiene éxito para abrir la primera transacción e insertar los registros de 7000 en un momento en que uno y sólo transacción.

Si divido las inserciones en transacciones separadas, digamos 500 registros por transacción, la limitación de 5 MB tiene efecto. PhoneGap no dice nada, simplemente no inserta los registros.

+0

¿Hizo más descubrimiento sobre este tema? – Prospero

+0

También hice una exploración exploratoria en esto. Logré meter 20 datatasters con 4,5MB cada uno, totalizando 90MB en una aplicación web safari sin que me pidieran más almacenamiento. Eso fue en una transacción. La próxima transacción fallará. – oligofren

10

Puede usar una base de datos SQLite nativa (igual que WebSQL) con un complemento de teléfono, y no tendrá ninguna limitación. En iOS5.1, WebSQL se considera datos temporales que se pueden eliminar en cualquier momento ... Ese complemento guarda la base de datos en la carpeta de documentos, lo que significa que la base de datos no se borra y es guardada por iCloud.

Aquí es el nativo plugin de SQLite PhoneGap: https://github.com/davibe/Phonegap-SQLitePlugin En cuanto a este plugin, hay algunas diferencias entre la API WebSQL, aquí es un adaptador: https://gist.github.com/2009518

También debe migrar el archivo WebSQL db edad (almacenado en Library/WebKit o Caches directory) a la carpeta de documentos. Aquí hay un código para hacer eso: https://gist.github.com/2009491

Y si los datos son importantes, debe guardarlos en un servidor. Escribí una lib pequeña para sincronizar la base de datos SQlite a un servidor: https://github.com/orbitaloop/WebSqlSync

Cuestiones relacionadas