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 10-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
unable to open database file

Buenas noches, o días ...
Cita:
Exception class TDBXError with message 'unable to open database file'. Process Project2.apk (22789)
Pues ese es precisamente el mensaje de error que me devuelve la aplicación al ejecutar mi código al compilar para android sin embargo si lo compilo para win32 funciona sin problemas.
Estoy intentando conectar a una BD en SQLite pero sin éxito al hacerlo para Android; les dejo el código por si ven algo que me pueda dar una idea que por que esta fallando, gracias de ante mano y un saludo.
Código Delphi [-]
procedure TForm2.connectButtonClick(Sender: TObject);
begin

  SQLConnection1.Params.Add('database=C:\test.db');
  try
    SQLConnection1.Connected := true;
    executeButton.Enabled := true;
    outputMemo.Text := 'Connection established!';
  except
    on E: EDatabaseError do
      ShowMessage('Exception raised with message' + E.Message);
  end;
end;

procedure TForm2.executeButtonClick(Sender: TObject);
var
  results: TDataSet;
  query: String;
begin
  query := 'SELECT * FROM Usuarios;';

  try
    SQLConnection1.Execute(query, nil, results);
  except
    on E: Exception do
      outputMemo.Text := 'Exception raised with message: ' + E.Message;
  end;
  while NOT results.Eof  do
   begin
  Form2.outputMemo.Lines.Add(results.FieldByName('nombre').AsString);
   results.Next;
   end;
end;
Responder Con Cita
  #2  
Antiguo 10-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código:
SQLConnection1.Params.Add('database=C:\test.db');
Android no entiende esa ruta típica de sistemas windows.
Responder Con Cita
  #3  
Antiguo 10-10-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Échale un vistazo a este documento.
Tal y como dice Casimiro, el path tal y como lo has puesto fallará en Android.

Para ello hay una clase TPath. Revisa la propiedad GetDocumentsPath.

Aquí tienes otro ejemplo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 11-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Buenas de nuevo;

Primero quiero dar las gracias a Casimiro por comentar en donde y por que estaba el fallo
En segundo lugar (voy por orden), a Neftali por darme la pista por donde indagar
Ya resolví el problema y ya, por fin, me conecta les comento por si a alguien le puede servir también de ayuda.
  • Primero deben de dar de "alta" su BBDD en el Deployment Manager
  • Y luego llamarla:
Código Delphi [-]
SQLConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetSharedDocumentsPath, 'test.db');

Total de codigo:
Código Delphi [-]
procedure TForm2.connectButtonClick(Sender: TObject);
begin
   SQLConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetSharedDocumentsPath, 'test.db');
  try
    SQLConnection1.Connected := true;
    executeButton.Enabled := true;
    outputMemo.Text := 'Conexión Establecida !!!!';
  except
    on E: EDatabaseError do
      ShowMessage('Exception raised with message' + E.Message);
  end;
end;

procedure TForm2.executeButtonClick(Sender: TObject);
var
  results: TDataSet;
  query: String;
begin
  query := 'SELECT * FROM testtable;';

  try
    SQLConnection1.Execute(query, nil, results);
  except
    on E: Exception do
      outputMemo.Text := 'Exception raised with message: ' + E.Message;
  end;
  while NOT results.Eof  do
   begin
  Form2.outputMemo.Lines.Add(results.FieldByName('Name').AsString);
   results.Next;
   end;
end;

Gracias y un saludo.!!!
Responder Con Cita
  #5  
Antiguo 11-10-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias a tí por compartir el código.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 15-10-2013
gandalf_uy gandalf_uy is offline
Miembro
 
Registrado: ene 2005
Posts: 39
Poder: 0
gandalf_uy Va por buen camino
Cita:
Empezado por barakuda Ver Mensaje
  • Primero deben de dar de "alta" su BBDD en el Deployment Manager
Como hago para darla de alta en el "Deployment Manager"?

Yo lo que quiero hacer es tener una base SQLite en mi PC y poder copiarla a mi dispositivo Android.

Alguna idea?


Gracias!
Saludos
Responder Con Cita
  #7  
Antiguo 15-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
nas..!
En la barra ... Project > Deployment
Clic en Add file, el icono "posit con chispa" y buscas allá donde tengas la bbdd.
En Plataforms clic en [...] y deseleccionas los sistemas que no quieras yo solo dejo Android.
En Remote Path pon: assets\

te dejaría una captura pero no puedo
Responder Con Cita
  #8  
Antiguo 15-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por barakuda Ver Mensaje
te dejaría una captura pero no puedo
¿Por qué no puedes?
Responder Con Cita
  #9  
Antiguo 15-10-2013
gandalf_uy gandalf_uy is offline
Miembro
 
Registrado: ene 2005
Posts: 39
Poder: 0
gandalf_uy Va por buen camino
Ya hice lo de agregar la bd al Deployment Manager con "assets\" en el Remote Path.

Esto debería hacer que cuando compilo y ejecuto la aplicación directamente sobre mi dispositivo real (no emulador), me copia esta base local al dispositivo?

Si es así no estoy logrando que suceda... El remote path "assets\" que significa?

Gracias...
Responder Con Cita
  #10  
Antiguo 15-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Nas ...
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Por qué no puedes?
No puedo pq cuando le doy al icono de insertar imagen no me hace nada.

Cita:
Casimiro Notevi
por lo de antes nada, recorde que con [img]____[/img] se puede hacer tambien, sorry!!
Cita:
Esto debería hacer que cuando compilo y ejecuto la aplicación directamente sobre mi dispositivo real (no emulador), me copia esta base local al dispositivo?
Si
Cita:
Si es así no estoy logrando que suceda... El remote path "assets\" que significa?
assets: es donde se guardan los fichero que iremos necesitando una vez el programa este en marcha.
El directorio donde te deja la bbdd que se encuentra dentro de tu projecto.... Android\Debug\tu projecto\assets cuando compila
Acuerdate luego de llamarla:
Código Delphi [-]
SQLConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetSharedDocumentsPath, 'aqui_tu_bbdd');
Si ves que no te funciona pega parte de tu código y le echamos un vistazo.

Última edición por barakuda fecha: 15-10-2013 a las 19:22:43.
Responder Con Cita
  #11  
Antiguo 15-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por barakuda Ver Mensaje
No puedo pq cuando le doy al icono de insertar imagen no me hace nada.
¿No te sale una ventanita pidiendo la URL de la imagen?
Imágenes Adjuntas
Tipo de Archivo: jpg aaa.jpg (20,4 KB, 14 visitas)
Responder Con Cita
  #12  
Antiguo 15-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿No te sale una ventanita pidiendo la URL de la imagen?
Tienes toda la razón el problema es y me pasa a menudo tengo activado el bloqueador de pop-up y no es la 1ª vez que me sucede, ya lo desbloquee para futuros post
gracias y perdón por las molestias.
Responder Con Cita
  #13  
Antiguo 16-10-2013
barakuda barakuda is offline
Miembro
 
Registrado: mar 2010
Posts: 79
Poder: 15
barakuda Va por buen camino
Vuelvo a subir la imagen que por manazas borre!

Responder Con Cita
  #14  
Antiguo 16-10-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Muchas gracias.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #15  
Antiguo 16-10-2013
gandalf_uy gandalf_uy is offline
Miembro
 
Registrado: ene 2005
Posts: 39
Poder: 0
gandalf_uy Va por buen camino
Muchas gracias barakuda!

No estaba seleccionando la plataforma Android, por eso no me pasaba la bbdd!

A seguir probando...
Responder Con Cita
  #16  
Antiguo 26-03-2014
NicolasP NicolasP is offline
Miembro
 
Registrado: may 2013
Posts: 28
Poder: 0
NicolasP Va por buen camino
Puede ser la ver de sqlite?

Yo cree la base con Sqlite Administrator, en versión 3.

y seguí esta guía
docwiki.embarcadero.com/RADStudio/XE5/en/Creating_an_Android_App
pero nada, me da error "unable open database file"

Chequeo en la carpeta donde se genera el proyecto andoid y aparece bien la DB.
Probé poner el remote path
assets/
y
assets/internal
cambiando la forma de indicar el archivo en el TFDconexion (como dice al final el tutorial que cito)
pero me da el mismo error.

La copio manualmente al celular en la carpeta /Documents y le pongo así:
BASE_TM.Params.values['Database'] := '/sdcard/Documents/base.s3db';

Tampoco funciona , no encuentra el archivo.

En windows funciona perfecto. Pero en Android nada. La verdad me mató.....:
Responder Con Cita
  #17  
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.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por si acaso, recuerda que en android los nombres de ficheros, directorios etc. son distintos en minúsculas y mayúsculas.
Responder Con Cita
  #18  
Antiguo 04-04-2019
DarthGomis DarthGomis is offline
Registrado
 
Registrado: feb 2019
Posts: 5
Poder: 0
DarthGomis Va por buen camino
Solución

Después de estar investigando este hilo, al tener el mismo problema, he encontrado una solución. Básicamente hay un método de la clase TPath que te lleva a la carpeta de assets de tu proyecto.

Código Delphi [-]
TPath.GetPublicPath;

De manera que para cargar la base de datos, o cualquier archivo sería algo así.

Código Delphi [-]
FDConnection1.Params.Database := TPathCombine(TPath.GetPublicPath, 'nombrebbdd.db');

Espero que os sirva, un saludo.
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
Error while trying to open file msucuzhanay Firebird e Interbase 1 04-04-2013 15:53:08
Error while trying to open file msucuzhanay Conexión con bases de datos 0 03-04-2013 02:45:53
Unable to open BCP host data-file Kastor SQL 0 18-07-2008 19:00:46
[Linker Fatal Error] Fatal: Unable to open file 'SMI2XLS.OBJ' nera C++ Builder 0 06-09-2006 14:38:25
Error while trying to open file nefy Firebird e Interbase 4 15-09-2004 21:02:42


La franja horaria es GMT +2. Ahora son las 20:33:52.


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