Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2014
dfarias dfarias is offline
Miembro
 
Registrado: abr 2007
Posts: 79
Poder: 18
dfarias Va por buen camino
Unhappy Fallos con SQLITE

Buenos días, tardes o noches. Ya estoy perdido en el tiempo después de 5 días tratando de hacer funcionar mi primera app con sqlite. Trate de realizar el ejemplo que propone embarcadero y otros tantos que he visto en la web y no solo que no logro que funcione sino que hay errores que no entiendo su causa. En primer lugar quiero comentar que todas la pruebas las hago con XE5 y en un Nexus 7 con 32Gb.

La primera cuestión es por que al hacer el deploy con la base de datos al querer consultarla (btnConectar) aparece vacía como si recién fuese creada . El archivo esta transferido porque como se ve en el código primero verifico si existe.

Además al ver el contenido de la carpeta (btnVerDirectorio) puedo ver que existe junto a otros archivos .jpg que están en el deploy. Pero si consulta la base esta vacia (btnVerBaseSqlite).

El segundo problema que encuentro es que si la base no existe no debería crearla según el parametros FalIFexist='True'(btnConectar). Pues la crea y además me permite agregarle registros(btnCrearTabla) y también consultarlo(btnVerRegistros). Pero al volver a ejecutar la app la base ya no existe.
Código Delphi [-]
procedure TForm4.btnConectarClick(Sender: TObject);
begin
    if not FileExists( TPath.Combine(TPath.GetDocumentsPath , trim(edit1.text))) then
     showmessage('No existe:'+ TPath.Combine(TPath.GetDocumentsPath, trim(edit1.text)));
     Dbase.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, trim(edit1.text));  //'Dbase.s3db');
    dbase.Params.Values['ColumnMetadataSupported'] := 'False';
    dbase.Params.Values['FailIfMissing']:='True';
   try
     dbase.Connected := true;
     showmessage('Conexión Establecida !!!!');
   except
     on E: EDatabaseError do
       ShowMessage('Exception raised with message' + E.Message);
   end;
 end;


 procedure TFOrm4.VerDirectorio(DirPath:string);
 var
   DirList: TStringDynArray;
   s: string;
 begin
 //  DirPath := TPath.GetDocumentsPath;
    memo1.Lines.Add('Directorio de busqueda: ' + DirPath);
   if TDirectory.Exists(DirPath, True) then
   begin
     // Get all files. Non-Windows systems don't typically care about
     // extensions, so we just use a single '*' as a mask.
     DirList := TDirectory.GetFiles(DirPath, '*');
      // If none found, show that in memo
     if Length(DirList) = 0 then
       memo1.Lines.Add('Archivos no encontrados en: ' + DirPath)
     else
     begin
       for s in DirList do
         memo1.Lines.Add(s);
     end;
   end
   else
     memo1.Lines.Add('Directory does not exist.');
 end;


 procedure TForm4.VerBaseSqliter;
 var
   results: TDataSet;
   query: String;
 begin
    query:='SELECT * FROM sqlite_master';
    try
      dbase.Execute(query,nil,results);
    except
     on E: EDatabaseError do
       ShowMessage('Exception raised with message' + E.Message);
     end;
    while NOT results.Eof  do
    begin
       archivos.Lines.Add(results.FieldByName('tbl_name').AsString);
       results.Next;
    end;
 End;


 procedure TForm4.btnCrearTablaClick(Sender: TObject);
 begin
      dbase.ExecuteDirect('create table if not exists productos (id int(5) primary key not null, detalle char(30));');
      dbase.ExecuteDirect('insert INTO productos VALUES         (1,"detalle 1");');
      dbase.ExecuteDirect('insert into productos values         (2,"detalle 2");');
  end;


 procedure TForm4.btnVerRegistrosClick(Sender: TObject);
 var
   results:TDataset;
 begin
   try
     dbase.Execute('select * from productos', nil, results);
   except
     on E: Exception do
       showmessage( 'Exception raised with message: ' + E.Message);
   end;
   while NOT results.Eof  do
    begin
       archivos.Lines.Add(results.FieldByName('detalle').AsString);
       results.Next;
    end;
     results.Close;
  end;


La verdad que entre tantos problemas y las ciento de pagina visitadas tanto lo poco de Firemoky como lo abundate de Sqlite ya estoy totalmente confuso y no sé que mas puedo hacer. Si alguien me puede ayudar o guiarme a algo concreto para investigar se lo agradecería infinitamente.

Última edición por Ñuño Martínez fecha: 24-03-2014 a las 18:05:35. Razón: Recuperar el formato del código fuente
Responder Con Cita
  #2  
Antiguo 24-03-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Te he modificado el mensaje para recuperar el formato del código fuente, que lo habías perdido. Revisalo a ver si está bien.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 24-03-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y el mensaje de error?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 24-03-2014
dfarias dfarias is offline
Miembro
 
Registrado: abr 2007
Posts: 79
Poder: 18
dfarias Va por buen camino
Muchas gracias ñuño si es lo que digo que ya estoy mareado. Mamcx los errores son los comentados y que la aplicación no realiza segun lo programado.
Responder Con Cita
  #5  
Antiguo 25-03-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que mamcx pregunta por cuáles son esos errores, qué mensajes te indican y en qué circunstancias.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 26-03-2014
dfarias dfarias is offline
Miembro
 
Registrado: abr 2007
Posts: 79
Poder: 18
dfarias Va por buen camino
Como comento al principio del mensaje son estos:

1-Al hacer un deploy de un base con 4Mb al abrirla por que aparece vacia?.
2-Por que siempre crea la base si no existe aún con el parametro FailIfMissing=True?
3-Si al crear la base y agregar registros por que al reiniciar la applicacion no estan?
Responder Con Cita
  #7  
Antiguo 26-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Porque será otra base de datos?
Responder Con Cita
  #8  
Antiguo 26-03-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Acaba de ocurrírseme: ¿no estará SQLITE configurado para que elimine o vacíe la base de datos al cerrar la aplicación? Como si fuera una base de datos temporal.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #9  
Antiguo 26-03-2014
dfarias dfarias is offline
Miembro
 
Registrado: abr 2007
Posts: 79
Poder: 18
dfarias Va por buen camino
Creo que para hacerlo temporal hay que especificarlo en la query. Ejem. "create TEMP table_name"... Y como veras el código no hace eso. Salvo que exista otra manera que desconozca.
Casimiro por eso he puesto un botón donde consulta los archivos para ver si existe. Y efectivamente esta porque el deploy la ha instalado.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fallos en impresoras multifuncion-quickreport Tonyaldea Impresión 0 30-11-2006 13:44:35
Me da muchos fallos el quickreport 4.0 escullar Impresión 0 03-05-2006 12:14:31
Fallos al maximizar ventana MDIChild mazinger Varios 3 08-08-2005 14:23:00
Windows a prueba de fallos JMGR Varios 2 16-07-2003 00:23:00


La franja horaria es GMT +2. Ahora son las 12:57:10.


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
Copyright 1996-2007 Club Delphi