Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Lentitud con componentes Zeos (https://www.clubdelphi.com/foros/showthread.php?t=63819)

aggg63 04-03-2009 11:00:26

Lentitud con componentes Zeos
 
Hola.

Estoy haciendo una pequeña aplicacion con SQLite. Hasta hace poco usaba una libreria de CNPack para SQLite2. Funcionaba bien, me generaba 3 tablas y un indice en menos de 10 segundos. En las tablas introducia datos iniciales y la que mas registros tiene son 1700 con 5 campos. Repito, todo en menos de 10 segundos. Descubri los componentes Zeos y he migrado la aplicacion. Resulta que me tarda unos 5 minutos en hacer lo mismo. He probado varias cosas y no funcionan, por ejemplo:

Ejecutar todos los comandos en esta secuencia
Código:


    ZConsultaBD.SQL.Clear;
    ZConsultaBD.SQL.Add(comandoSQL);
    ZConsultaBD.Open;

Hacer un script para los comandos
Código:

  ZProcesoBD.Script.Clear;
  ZProcesoBD.Script.Add(comandoSQL+';');
  ZProcesoBD.Execute;

Tengo estas relaciones y definiciones:
Código:

    ZConexionBD.Database:=ficheroBaseDatos;
    ZConexionBD.Protocol:='sqlite-3';
    ZConexionBD.Connected:=TRUE;
    ZConsultaBD.Connection:=ZConexionBD;
    ZProcesoBD.Connection:=ZConexionBD;

He probado tambien a ejecutar ZProcesoBD.Script.Clear antes del bucle generador y ZProcesoBD.Execute al final del bucle. Peores resultados.

¿Alguien podria iluminarme para que estas operaciones vayan mas rapidas con Zeos? ¿O sugerir el uso de otros componentes? Gracias. Uso Delphi 2005.

aggg63 05-03-2009 11:33:19

Solucionado
 
Tema solucionado.

Antes de hacer nada hay que ejecutar

Código:

ZConsultaBD.SQL.Text('BEGIN');
ZConsultaBD.Open;

NO vale

Código:

ZConexion.StartTransaction;
Y finalmente

Código:

ZConsultaBD.SQL.Text('COMMIT');
ZConsultaBD.Open;

Gracias.

roman 05-03-2009 16:53:55

Cita:

Empezado por aggg63 (Mensaje 340272)
Gracias.

Gracias a tí por comentarlo. Quiere decir esto entonces que los componentes Zeos no manejan transacciones con SQLite y hay que hacerlo a pie, ¿no es así?

// Saludos


La franja horaria es GMT +2. Ahora son las 09:09:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi