In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

SQLite-blob

Foro público de Xailer en español
Responder
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Hola,
En un proyecto Xailer estoy manejando un Base de datos de SQLite a taves de
TSQLiteDataSource.
Tengo dos temas que no entiendo el comportamiento.
1º)
==================================
TEXT INTO cSQL
UPDATE TABLA1
SET COL1 = 'asdf';
UPDATE TABLA2
SET COL1 = 'qwerty';
UPDATE TABLA3
SET COLn = 'xxxxxxx'
ENDTEXT
oDataSource:execute( cSQL )
Solo ejecuta el sript hasta el primer ";" incluso en SQLite Editor, con
cualquier otro adminstrador de SQLite todo funciona perfectamente.
2º)
===============================================
Para guardar imagenes en una columna de tipo "blob" todo me funciona bien,
siempre que el tamaño de la imagen no supere 1 Mb. lo mismo que en el caso
anterior almaceno imagenes de cualquier tamaña en la misma base de datos con
cualquier otro programa de administracion.
Este comportamiento ¿es el previsto?, de ser así­ hay algo que yo pueda hacer
para modificarlo.
Saludos. Miguel A. Torrellas.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

SQLite-blob

Mensaje por jfgimenez »

Miguel,
1) Hasta donde yo sé, SQLite no ejecuta más de una sentencia en cada
ocasión. Es decir, aunque le pases varias sentencias separadas con punto y
coma, sólo ejecuta la primera, y no es que Xailer lo limite, sino que lo
hace así el parser de sentencias del propio SQLite, al menos hasta la
versión que estamos usando. Si algún otro administrador de SQLite es capaz
de ejecutar todas las sentencias será porque él las esté interpretando y
ejecutando.
2) Yo he utilizado campos blob en SQLite con imágenes de 2 y 3 MB sin ningún
problema. Por favor, envíanos un ejemplo que falle.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Gracias por responder
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje de
noticias news:[email=494eaa27@svctag-j7w3v3j....]494eaa27@svctag-j7w3v3j....[/email]
> Miguel,
>
> 1) Hasta donde yo sé, SQLite no ejecuta más de una sentencia en cada
> ocasión. Es decir, aunque le pases varias sentencias separadas con punto y
> coma, sólo ejecuta la primera, y no es que Xailer lo limite, sino que lo
> hace así­ el parser de sentencias del propio SQLite, al menos hasta la
> versión que estamos usando. Si algún otro administrador de SQLite es capaz
> de ejecutar todas las sentencias será porque él las esté interpretando y
> ejecutando.
Seguramente sea así­, solo que me extrañaba que otros programas lo hicieran.
> 2) Yo he utilizado campos blob en SQLite con imágenes de 2 y 3 MB sin
> ningún problema. Por favor, enví­anos un ejemplo que falle.
Lo preparo y lo pongo en este foro.
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Adjunto pongo proyecto demostrativo incluida la base de datos
Saludos. Miguel A. Torrellas
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje de
noticias news:[email=494eaa27@svctag-j7w3v3j....]494eaa27@svctag-j7w3v3j....[/email]
> Miguel,
>
> 1) Hasta donde yo sé, SQLite no ejecuta más de una sentencia en cada
> ocasión. Es decir, aunque le pases varias sentencias separadas con punto y
> coma, sólo ejecuta la primera, y no es que Xailer lo limite, sino que lo
> hace así­ el parser de sentencias del propio SQLite, al menos hasta la
> versión que estamos usando. Si algún otro administrador de SQLite es capaz
> de ejecutar todas las sentencias será porque él las esté interpretando y
> ejecutando.
>
> 2) Yo he utilizado campos blob en SQLite con imágenes de 2 y 3 MB sin
> ningún problema. Por favor, enví­anos un ejemplo que falle.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
--

Attached files BLOB.zip (3.1 KB)Â
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

SQLite-blob

Mensaje por jfgimenez »

Miguel,
gracias por el ejemplo. Lo he estado investigando y efectívamente hay un
problema. Desde la versión 3.4.0 de SQLite establecieron una serie de
límites, que entre otros impide utilizar sentencias de más de 1MB de
longitud. Yo estaba seguro de que no me había tropezado con ese límite, y es
cierto; todavía tengo un programa que almacena imágenes y que no tenía
ningún problema. Pero claro, he comprobado que ese programa está hecho con
la versión 3.3.13 de SQLite, y por entonces no había límites de ningún tipo.
En resumen, puedo prepararte una nueva librería SQLite con dicho límite
aumentado a, digamos 10MB, pero siempre va a existir un límite. No obstante,
vamos a cambiar la forma de almacenar los blob en Xailer 2.0 para que no se
vea afectado por dicho límite.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Hola Jose,
Gracias por responder.
He leido algo al respecto que ahora no consigo encontrar en la web de
SQLite, pero creo recordar que lei 1000000000 Bytes lo que superaria con
mucho el limite real; pero digo que no recuerdo bien.
Te agradeceria prepararas la lib ya que estoy seguro que somos un buen
número de usuarios de Xailer que usamos esta Base de Datos y por lo que se
ve creciendo.
Repecto a que solo puede ejecutar solo una sentencia, lo he solucionado
creando un método en la clase TSqlilteDataSource:ExecuteScript el cuual
interpreta cada una de las sentencias y las ejecuta una a una,
fundamentalmente lo empleo para crear las tablas, triggers, vistas, etc. en
runtime.
oDataSource:ExecuteScript( MemoRead( "miscript.sql" ) )
CLASS TSQLiteDataSource FROM XSQLiteDataSource
PUBLIC:
METHOD ExecuteScript( cScript )
ENDCLASS
METHOD ExecuteScript( cScript ) CLASS TSQLiteDataSource
LOCAL nPos, cCommand
while Len( cScript ) > 0
nPos := At( ";" , cScript )
cCommand := Left( cScript, nPos )
if "BEGIN" $ cCommand
nPos := At( "END;" , cScript) + 3
cCommand := Left( cScript, nPos )
endif
cScript := AllTrim( Right( cScript, Len(cScript) - nPos ) )
::Execute( cCommand, "Crear Tablas" )
end
RETURN Nil
Saludos. Miguel A. Torrellas
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje de
noticias news:[email=49562607@svctag-j7w3v3j....]49562607@svctag-j7w3v3j....[/email]
> Miguel,
>
> gracias por el ejemplo. Lo he estado investigando y efectí­vamente hay un
> problema. Desde la versión 3.4.0 de SQLite establecieron una serie de
> lí­mites, que entre otros impide utilizar sentencias de más de 1MB de
> longitud. Yo estaba seguro de que no me habí­a tropezado con ese lí­mite, y
> es cierto; todaví­a tengo un programa que almacena imágenes y que no tení­a
> ningún problema. Pero claro, he comprobado que ese programa está hecho con
> la versión 3.3.13 de SQLite, y por entonces no habí­a lí­mites de ningún
> tipo.
>
> En resumen, puedo prepararte una nueva librerí­a SQLite con dicho lí­mite
> aumentado a, digamos 10MB, pero siempre va a existir un lí­mite. No
> obstante, vamos a cambiar la forma de almacenar los blob en Xailer 2.0
> para que no se vea afectado por dicho lí­mite.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

SQLite-blob

Mensaje por jfgimenez »

Miguel,
> He leido algo al respecto que ahora no consigo encontrar en la web de
> SQLite, pero creo recordar que lei 1000000000 Bytes lo que superaria con
> mucho el limite real; pero digo que no recuerdo bien.
Aquí están los límites por defecto de SQLite:
http://www.sqlite.org/limits.html
Y aquí está la lista de cambios:
http://www.sqlite.org/changes.html
Fíjate en la versión 3.4.0, que dice exactamente:
"Added explicit upper bounds on the sizes and quantities of things SQLite
can process. This change might cause compatibility problems for applications
that use SQLite in the extreme, which is why the current release is 3.4.0
instead of 3.3.18."
> Te agradeceria prepararas la lib ya que estoy seguro que somos un buen
> número de usuarios de Xailer que usamos esta Base de Datos y por lo que se
> ve creciendo.
Aquí está: http://www.xailer.com/files/sqlite.zip. Hemos ampliado el límite
hasta unos 100MB (en realidad 100.000.000 bytes).
No obstante, tengo que aclararte una cosa: cuando utilizas el método
SaveToStrem() de TPicture para obtener una cadena binaria de la imagen, esa
imagen está en formato BMP, no en el formato original que usaste para
mostrarla en el TImage. Por lo tanto, en el caso de fotografías, que suelen
ser las imágenes más grandes, como el formato BMP no está comprimido, va a
ocupar muchísimo más que si la tuvieras en JPEG. A mí concretamente me ha
pasado; he utilizado una fotografía de prueba (de 8M pixels) que me ocupa
1,43 MB en disco, pero al grabarla en la BD ocupa unos 47MB.
En resumen, lo que quiero decir es que es mejor guardar directamente la
imagen original, no la que se obtiene con SaveToStream(), y dejar este
método solamente para imágenes más pequeñas.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Hola,
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje de
noticias news:495903b0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Miguel,
>
>> He leido algo al respecto que ahora no consigo encontrar en la web de
>> SQLite, pero creo recordar que lei 1000000000 Bytes lo que superaria con
>> mucho el limite real; pero digo que no recuerdo bien.
>
> Aquí­ están los lí­mites por defecto de SQLite:
> http://www.sqlite.org/limits.html
>
> Y aquí­ está la lista de cambios:
> http://www.sqlite.org/changes.html
>
> Fí­jate en la versión 3.4.0, que dice exactamente:
> "Added explicit upper bounds on the sizes and quantities of things SQLite
> can process. This change might cause compatibility problems for
> applications that use SQLite in the extreme, which is why the current
> release is 3.4.0 instead of 3.3.18."
>
Leido, no podí­a ser otra cosa.
>
>> Te agradeceria prepararas la lib ya que estoy seguro que somos un buen
>> número de usuarios de Xailer que usamos esta Base de Datos y por lo que
>> se ve creciendo.
>
> Aquí­ está: http://www.xailer.com/files/sqlite.zip. Hemos ampliado el
> lí­mite hasta unos 100MB (en realidad 100.000.000 bytes).
>
Gracias, lo probaré, anque estoy seguro de que funciona.
> No obstante, tengo que aclararte una cosa: cuando utilizas el método
> SaveToStrem() de TPicture para obtener una cadena binaria de la imagen,
> esa imagen está en formato BMP, no en el formato original que usaste para
> mostrarla en el TImage. Por lo tanto, en el caso de fotografí­as, que
> suelen ser las imágenes más grandes, como el formato BMP no está
> comprimido, va a ocupar muchí­simo más que si la tuvieras en JPEG. A mí­
> concretamente me ha pasado; he utilizado una fotografí­a de prueba (de 8M
> pixels) que me ocupa 1,43 MB en disco, pero al grabarla en la BD ocupa
> unos 47MB.
>
> En resumen, lo que quiero decir es que es mejor guardar directamente la
> imagen original, no la que se obtiene con SaveToStream(), y dejar este
> método solamente para imágenes más pequeñas.
>
Si, ya hize en sus momentos bastantes pruebas al respecto y te llevas
enormes sorpresas con las fotografí­as, pero te agradezco enormemente tus
observaciones.
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
En fin gracias por todo, en particular por la rapided.
Saludos. Miguel A. Torrellas
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Hola Jose
He reinstalado Xailer y tení­a olvidado este tema. He visto que la versión
1.99 no lo tiene actualizado y el enlace
http://www.xailer.com/files/sqlite.zip para su descarga no funciona.
Por favor como puedo conseguir el fichero con SQLite.lib corregido.
Gracias por anticipado.
Miguel A. Torrellas
"Miguel Torrellas" <miguel@torrellas.net> escribió en el mensaje de
noticias:49593a58$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Hola,
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
> de noticias news:495903b0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Miguel,
>>
>>> He leido algo al respecto que ahora no consigo encontrar en la web de
>>> SQLite, pero creo recordar que lei 1000000000 Bytes lo que superaria con
>>> mucho el limite real; pero digo que no recuerdo bien.
>>
>> Aquí­ están los lí­mites por defecto de SQLite:
>> http://www.sqlite.org/limits.html
>>
>> Y aquí­ está la lista de cambios:
>> http://www.sqlite.org/changes.html
>>
>> Fí­jate en la versión 3.4.0, que dice exactamente:
>> "Added explicit upper bounds on the sizes and quantities of things SQLite
>> can process. This change might cause compatibility problems for
>> applications that use SQLite in the extreme, which is why the current
>> release is 3.4.0 instead of 3.3.18."
>>
>
> Leido, no podí­a ser otra cosa.
>
>>
>>> Te agradeceria prepararas la lib ya que estoy seguro que somos un buen
>>> número de usuarios de Xailer que usamos esta Base de Datos y por lo que
>>> se ve creciendo.
>>
>> Aquí­ está: http://www.xailer.com/files/sqlite.zip. Hemos ampliado el
>> lí­mite hasta unos 100MB (en realidad 100.000.000 bytes).
>>
>
>
> Gracias, lo probaré, anque estoy seguro de que funciona.
>
>
>> No obstante, tengo que aclararte una cosa: cuando utilizas el método
>> SaveToStrem() de TPicture para obtener una cadena binaria de la imagen,
>> esa imagen está en formato BMP, no en el formato original que usaste para
>> mostrarla en el TImage. Por lo tanto, en el caso de fotografí­as, que
>> suelen ser las imágenes más grandes, como el formato BMP no está
>> comprimido, va a ocupar muchí­simo más que si la tuvieras en JPEG. A mí­
>> concretamente me ha pasado; he utilizado una fotografí­a de prueba (de 8M
>> pixels) que me ocupa 1,43 MB en disco, pero al grabarla en la BD ocupa
>> unos 47MB.
>>
>> En resumen, lo que quiero decir es que es mejor guardar directamente la
>> imagen original, no la que se obtiene con SaveToStream(), y dejar este
>> método solamente para imágenes más pequeñas.
>>
>
> Si, ya hize en sus momentos bastantes pruebas al respecto y te llevas
> enormes sorpresas con las fotografí­as, pero te agradezco enormemente tus
> observaciones.
>
>> --
>> Un saludo,
>>
>> José F. Giménez
>> http://www.xailer.com
>> http://www.xailer.info
>
> En fin gracias por todo, en particular por la rapided.
>
> Saludos. Miguel A. Torrellas
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

SQLite-blob

Mensaje por jfgimenez »

Miguel,
> He reinstalado Xailer y tenía olvidado este tema. He visto que la versión
> 1.99 no lo tiene actualizado y el enlace
> http://www.xailer.com/files/sqlite.zip para su descarga no funciona.
>
> Por favor como puedo conseguir el fichero con SQLite.lib corregido.
Ya te lo he subido al mismo sitio.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

SQLite-blob

Mensaje por miguel »

Gracias por tu interés.
Creo que igual serí­a bueno preparar la versión 1.99 con esta cuatro
chorradas que le quedan.
Saludos. Miguel A. Torrellas
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje de
noticias:4a2d5f8d$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Miguel,
>
>> He reinstalado Xailer y tení­a olvidado este tema. He visto que la versión
>> 1.99 no lo tiene actualizado y el enlace
>> http://www.xailer.com/files/sqlite.zip para su descarga no funciona.
>>
>> Por favor como puedo conseguir el fichero con SQLite.lib corregido.
>
> Ya te lo he subido al mismo sitio.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Responder