Autor |
Mensaje |
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Velocidad De Carga De SQlite
Hola, soy nuevo en gambas y por ende en este foro, de hecho soy bastante nuevito en Linux
Estoy tratando de migrar de a poco un simple programa de Stock que tengo hecho en Windows a linux y estoy usando el maravilloso "Gambas2" sobre Ubuntu. He bajado el libro de gambas de este foro y estoy utilizándolo para ir conociendo las prestaciones.
Tengo la siguiente consulta: estoy usando el ejemplo del programa de la sección "Bases de datos" del libro, todo aparenta normal, conecto a la base sqlite3, cargo los datos en un "columnview" y puedo hacer altas, bajas y modificaciones.
El problema comienza cuando importo a la base de datos mi base real, que para ser precisos tiene 8300 registros.
El columnview se va actualizando gradualmente y tarda cerca de un minuto en terminar de cargar la base de datos y mostrarla.
Esto es normal? Hay alguna manera de acelerar esto o es propia limitación de SQlite?
Desde ya muchas gracias...
Marcelo
|
#1 Lunes, 12 Septiembre 2011, 18:52 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
Re: Velocidad De Carga De SQlite
Apuesto a que el problema no es SQLite. A mí me ocurría igual y el coste del proceso reside en mostrar la información más que en leerla. En mi caso, iba agregando filas 1 a 1. Error. Era muy lento
Lo solucioné agregando todas las filas del tirón (lista.rows.count = MiRecorset.Count) y luego, en vez de rellenarlo, uso el evento DATA. Yo cargo unos 2000 registros (con imágenes, mucho más costoso) y va tremendamente fluido.
Escoger SQLite u otra tecnología no lo haría yo (salvo casos extremos) por la velocidad, sino por lo que necesitas. Y SQLite tiene la enorme ventaja de ser un sistema de base de datos portable.
Un saludo
=================== Proyecto Open Media Manager -> http://www.OpenMediaManager.com
|
#2 Lunes, 12 Septiembre 2011, 19:39 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Velocidad De Carga De SQlite
netking86:
Puedes poner un ejemplo de como usas el evento DATA, yo nunca supe manejarlo..
Gracias
|
#3 Lunes, 12 Septiembre 2011, 19:57 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Velocidad De Carga De SQlite
Muchísimas gracias por la pronta respuesta, me sumo al pedido, podría ser un pequeño ejemplo de como mostrar una base de esa manera?
|
#4 Lunes, 12 Septiembre 2011, 21:32 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Velocidad De Carga De SQlite
Aquí va un pequeño ejemplo:
http://foro.gambas-es.org/viewtopic.php?p=3273#p3273
De esta forma da igual lo grande que sea la base de datos en número de registros, porque el gridview (o tableview) sólo cargará desde la bd lo que tenga que ser mostrado en el grid, es decir, las celdas visibles, con un incremento en el rendimiento increíble.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#5 Lunes, 12 Septiembre 2011, 21:51 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Velocidad De Carga De SQlite
Uh!!! Mil gracias!!!!!
Ya mismo lo pruebo y aviso como va!!!
|
#6 Lunes, 12 Septiembre 2011, 22:55 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Velocidad De Carga De SQlite
A ver, pego el código que tengo para hacer la prueba y el error que recibo...
Más que seguro que el error es mio por simple principiante pero bueno... cualquier ayuda es agradecida!!
Tengo ese código en un FORM que solamente tiene el GRIDVIEW y al ejecutarlo recibo el error:
NULL OBJECT
y se detiene en la línea:
$hres = hConn.Exec("select * from Datos")
Dónde me estoy equivocando?
Muchas gracias!!!!
|
#7 Lunes, 12 Septiembre 2011, 23:47 |
|
|
netking86
Técnico Programador
Registrado: Septiembre 2009
Mensajes: 159
Edad: 38 Ubicación: Málaga
|
Re: Velocidad De Carga De SQlite
El objeto hConn no está establecido. Tienes que llamar a la función de conectar con la BBDD antes de ejecutar la consulta.
=================== Proyecto Open Media Manager -> http://www.OpenMediaManager.com
|
#8 Martes, 13 Septiembre 2011, 01:01 |
|
|
Marcelo
Aprendiz
Registrado: Septiembre 2011
Mensajes: 66
Edad: 50
|
Re: Velocidad De Carga De SQlite
Muchas Gracias!!!
Perdonen mi insistencia, pero no logro entender donde se cargan los datos de la base....
Mi código quedó así:
De esta manera obtengo una gridview en el formulario con filas grises y blancas alternadamente pero no se donde debo cargar los datos ya que aparece vacia y ni siquiera tiene los encabezados "Campo1", "Campo2", etc.
Gracias otra vez y perdon por la insistencia... ya aprenderemos...
Marcelo
|
#9 Martes, 13 Septiembre 2011, 17:44 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Velocidad De Carga De SQlite
Si ni siquiera aparecen los encabezados entonces es que la llamada a ConectarBase devuelve True, es decir, falla, por lo tanto se sale del procedimiento Form_Load inmediatamente.
Date cuenta de que ese procedimiento tiene que devolver False en caso de éxito al conectar con la BD.
Lo que me extraña es que no se dispare el error y por lo tanto el mensaje con dicho error dentro de ConectarBase. ¿Seguro que la base de datos contiene registros y está en la ruta correcta? Porque en sqlite, si se intenta conectar a una base de datos que no existe, se crea una nueva, pero vacía, sin tablas ni nada...
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#10 Martes, 13 Septiembre 2011, 18:11 |
|
|
|