Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Velocidad De Carga De SQlite
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
netking86 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Velocidad De Carga De SQlite 
 
netking86:
Puedes poner un ejemplo de como usas el evento DATA, yo nunca supe manejarlo..

Gracias
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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?
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Velocidad De Carga De SQlite 
 
Uh!!! Mil gracias!!!!!
Ya mismo lo pruebo y aviso como va!!!
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!!


' gambas class file

' Conexión con la base de datos
PRIVATE hConn AS Connection
PRIVATE FUNCTION ConectarBase() AS Boolean
IF hConn <> NULL THEN RETURN FALSE
  hConn = NEW Connection
  hConn.Host = "/home/libre/Gambas/Linux"
  hConn.Name = "LinuxFA"
  hConn.Type = "sqlite3"
  TRY hConn.OPEN()
  IF ERROR THEN
    hConn = NULL
    Message.Error("Error al conectar con la base de datos")
    RETURN TRUE
  ENDIF
  RETURN FALSE
END
' Cerrar la base de datos
PRIVATE SUB CerrarConexion()
  
  IF hConn = NULL THEN RETURN
    hConn.Close()
    hConn = NULL
END


PUBLIC SUB _new()

END

PRIVATE $hres AS Result

PUBLIC SUB Form_Open()


  gridview.Columns.Count = 4
  gridview.Columns[0].Text = ("Campo1")
  gridview.Columns[1].Text = ("Campo2")
  gridview.Columns[2].Text = ("Campo3")
  gridview.Columns[3].Text = ("Campo4")

  $hres = hConn.Exec("select * from Datos")
  gridview.Rows.Count = $hres.Count

END

'este es el manejador del evento Data
PUBLIC SUB gridview_Data(Row AS Integer, Column AS Integer)
    $hres.MoveTo(Row)  

    ' Esta línea sólo es para alternar los colores de las filas
    IF row MOD 2 = 0 THEN gridview.Data.Background = Color.LightBackground
END
 


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!!!!
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
netking86 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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í:

' gambas class file

' Conexión con la base de datos
PRIVATE hConn AS Connection
PRIVATE FUNCTION ConectarBase() AS Boolean
IF hConn <> NULL THEN RETURN FALSE
  hConn = NEW Connection
  hConn.Host = "/home/libre/Gambas/Gridview"
  hConn.Name = "LinuxFA"
  hConn.Type = "sqlite3"
  TRY hConn.OPEN()
  IF ERROR THEN
    hConn = NULL
    Message.Error("Error al conectar con la base de datos")
    RETURN TRUE
  ENDIF
  RETURN FALSE
END
' Cerrar la base de datos
PRIVATE SUB CerrarConexion()
  
  IF hConn = NULL THEN RETURN
    hConn.Close()
    hConn = NULL
END


PUBLIC SUB _new()

END

PRIVATE $hres AS Result

PUBLIC SUB Form_Open()

  IF ConectarBase() THEN RETURN

  gridview.Columns.Count = 4  
  gridview.Columns[0].Text = ("Campo1")
  gridview.Columns[1].Text = ("Campo2")
  gridview.Columns[2].Text = ("Campo3")
  gridview.Columns[3].Text = ("Campo4")

  $hres = hConn.Exec("select * from Datos")
  gridview.Rows.Count = $hres.Count

END

'este es el manejador del evento Data
PUBLIC SUB gridview_Data(Row AS Integer, Column AS Integer)
    $hres.MoveTo(Row)  

    ' Esta línea sólo es para alternar los colores de las filas
    IF row MOD 2 = 0 THEN gridview.Data.Background = Color.LightBackground
END
 


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
 



 
Marcelo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
El tema está bloqueado: no pueden editarse ni agregar mensajes. Libro De SQlite (Cerrado) ahtonio Bases de Datos 6 Domingo, 31 Enero 2010, 16:28 Ver último mensaje
Capa
No hay nuevos mensajes SQlite Problemas Con Una Consulta Fenriz07 Bases de Datos 2 Martes, 07 Junio 2011, 16:19 Ver último mensaje
Fenriz07
No hay nuevos mensajes Velocidad De Reproducción De Audio faranda77 Controles/Librerías/Componentes 12 Lunes, 26 Marzo 2018, 19:54 Ver último mensaje
vuott
No hay nuevos mensajes Arrays Y Test De Velocidad Shell General 0 Miercoles, 13 May 2020, 14:21 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron