Spanish Ubicacion de la DB

piramide

Member
Licensed User
Longtime User
Buenas, temgo el siguiente problema, no se donde se almacena la db en la pc, es decir estoy haciendo pruebas y me toma una db con datos ditintos a los que yo cargue, inclusive he buscado por el nombre la db y me encuentra la que hice pero cuando corro el programa en el emulador me toma otros datos viejos.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

No se si te refieres a los datos del AVD Manager (Android Virtual Device) ya que estas haciendo referencia al emulador.
Si es así, al entrar en el te dice donde estan instalados la lista de dispositivos virtuales.
Te pongo una captura para que lo veas

Saludos
 

Attachments

  • Portapapeles01.jpg
    106.8 KB · Views: 333

piramide

Member
Licensed User
Longtime User
Gracias por responder bgsoft, te explico mejor, tengo creada una db sqlite usando el SqliteBrowser, alli le cargue datos de prueba y la copie en la carpeta Files del proyecto, desde mi app consulto datos de la db, pero luego me doy cuenta que si modifico la db desde el Sqlitebrowser (modifico datos) cuando lo leo desde mi app me muestra los anteriores, inclusive he renombrado la db de la carpeta file y sigue accediendo a los datos, por eso pregunto donde se almacena realmente. espero se entienda.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola piramide

Creo entender que no sabes donde se almacena la base de datos en el dispositivo movil, que la has cargado en la carpeta files del IDE y que cuando modificas desde fuera te coge mal los datos.

Si es esto, varias cosas:
Cuando añades un fichero desde el IDE, este lo pone en : File.DirAssets (cuando instalas la .apk).
Pero esta carpeta es de solo lectura, por lo tanto si intentas modificar no te dejará
Para trabajar con un fichero que has metido en el proyecto, tienes que copiarlo a otro sitio, y si quieres que sea visible a otra aplicación, entonces tiene que ser una carpeta diferente a la de tu proyecto, por ejemplo el raiz del dispositivo:
B4X:
        Try
       File.Copy(File.DirAssets,Nombre del fichero, File.DirRootExternal, Nombre del fichero)

    Catch
        Log(LastException)
    End Try

Mirate este tutorial de un compañero del foro:
https://www.b4x.com/android/forum/threads/b4a-tutorial-almacenamiento-en-android.13039/

Por otro lado no estoy seguro cuando dices que lo modificas pero despúes no sale esos cambios, cuenta que cuando tu añades un fichero, este lo guarda y cuando compila lo pone en el proyecto, pero si tu modificas este fichero, a menos que lo vuelvas a borrar (del proyecto) y a cargar no te cogerá los cambios.

Para que nos entendamos: Yo añado al proyecto el fichero que lo tengo en mi PC en c:\ficheros , y que contiene el texto uno, dos, tres. Luego despues de añadirlo al proyecto, modifico el fichero y le añado el texto cuatro, este cambio no se hace automatico al proyecto, tienes que borrar el fichero anterior y volver a añadir el modificado en c:\ficheros para que así te coja ese cambio que has echo añadiendo el texto cuatro.

Si miras en tu proyecto (en el PC), dentro de la carpeta Files, es donde estarán los ficheros que añadas desde ADDFiles del IDE


Saludos
 
Last edited:

piramide

Member
Licensed User
Longtime User


Muy clara la explicación, yo utilizo BDUtils para realizar lo relacionado a la DB, ya que por lo que pude investigar es mas eficiente que hacerlo a mano.
Ahora pregunto lo de la db que no se actualiza automáticamente es un error o ?.

La app que necesito hacer es la siguiente a partir de una DB firebird de un soft de gestion que hice para PC, la convierto a sqlite para copiarla al celular, con esto luego la utilizo para cargar las reposiciones en las gondolas de un supermercado (leo el codigo de barra, busco en la db y cargo la cantidad a reponer), luego lo vuelco a una impresora, es factible logralo teniendo en cuenta lo que comentaste anteriormente?

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User

Puedes usar para crear la bd en el computador http://sqlitebrowser.org/ es sencillo, bueno y gratuito.

En cambio en el telefono para revizar la bd utilizo SQLite Editor.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Ahora pregunto lo de la db que no se actualiza automáticamente es un error o ?.

No, no es un error, es algo lógico, cuando tu cargas un fichero (del tipo que sea) el B4A lo pone como te dije en la carpeta files, pero no utiliza para nada la carpeta de donde tu lo añadiste, por lo tanto si haces una modificación tendras como te dije borrarlo y añadirlo de nuevo.


Para hacer esto tienes muchas formas de hacerlo, las dos mas genéricas a grandes rasgos serian; o bien tu App accede a la base de datos en un servidor (algo complejo) , o bien te bajas desde la App el fichero de base de datos y asi lo lees, esto es bastante facil hacerlo con Http, puedes ver un ejemplo aqui:
https://www.b4x.com/android/forum/threads/okhttp-replaces-the-http-library.54723/#content

Saludos
 

piramide

Member
Licensed User
Longtime User


Utilizo el SqlBrowser para trabajar desde la pc. La idea era hacer la actualización de la DB mas manual, es decir conectar el celular por usb y copiar en la tarjeta la db, luego desde la app consultar y actualizar todo lo que sea necesario, hasta que se requiera nuevamente actualizar la db del telefono y para eso lo haria copiando nuevamente (via conexion usb), sera factible?

el lugar para donde lo estoy desarrollando no tiene internet y el personal esta muy poco capacitado, es decir hay que armar algo muy básico.
 

dar2o3

Active Member
Licensed User
Longtime User
Pueden poner un router y crear una red WiFi sin necesidad de tener internet, a partir de ahí puedes hacer muchas cosas.
  • Atacar a la bd directamente sin necesidad de crearte una bd en el dispositivo.
  • Crearte una bd en el dispositivo, en el momento que te interese, pasar los datos en formato CSV y desde el programa que hiciste tratarlos.
  • Etc...
 

rscheel

Well-Known Member
Licensed User
Longtime User

Estimado no necesita conectar el computador al teléfono para crear o actualizar una bd sqlite, todo lo que tiene que hacer es ir a la carpeta del proyecto y entrar en la carpeta file y coloca la bd ahí o la edita directamente con el programa que le indique mas arriba, y si mas adelante necesita agregar campos extras a la tabla crear a través de código en b4a, comprobando si existe o si no lo crea.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola:


Dar2o3 y Rscheel ya te han dado buenas ideas, pero claro, puedes hacer mas cosas:
1) Como tu dices te conectas via USB y copias la base de datos, ya que como dices el personal no está muy capacitado, pero tendras que compilar de nuevo para que coja la base de datos modificada.
2) Cuando arranques tu APP mira si existe la base de datos en la carpeta de descargas del dispositivo (download), si no existe la copias alli, cuando quieras actualizar la base de datos lo haces via Bluetooth que la dejará en la carpeta download , creo que por poco que esté capacitado el personal sabran enviar un fichero via bluetooth, lo unico a tener en cuenta es que si existe la base de datos en esa carpeta, bluetooth le añadirá un numero entre parentisis al nombre de la base de datos; por ejemplo, si se llama productos.db , se llamará productos(1).db , pero o le dices que borren antes de enviar, o bien tu app coge el número mayor del nombre, borra el resto y renombra.

Saludos
 

piramide

Member
Licensed User
Longtime User


muchas gracias, creo haber entendido el funcionamiento de b4a con las db, y me han dado varias opciones para seguir con el proyecto. de todos modos acepto otras ideas o sugerencias
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Piramide:

Ideas creo que se te han dado bastantes para resolver tu problema, pero cuando programas cada cual le gusta utilizar mas un método u otro. Creo que si quieres hacer esa aplicación, no complicarte y que funcione sin intervención nada mas que tuya, la forma mas simple seria que tu App se baje de un servidor la base de datos.
Para esto, lo mejor que puedes hacer es bajarte el ejemplo que hay aqui:
https://www.b4x.com/android/forum/threads/download-huge-files-with-httputils2.30220/#content
Ponerle tus datos, y cuando te funcione entonces lo adaptas a tu APP.

Para que cada vez que entre en la APP no te tengas que bajar el fichero, puedes hacer dos cosas, o en el servidor no pones la base de datos y al consultarla en el evento te dará que no se pudo bajar, o bien pones un fichero de texto pequeño que hará lo mismo, o tambien puedes ponerle en ese fichero en una linea que actualice o no.
Yo este método lo evitaria enviando un mensaje instantaneo a la APP diciendole que debe actualizar la base de datos, pero por ahora no te aconsejo que te metas en estos lios que no son complejos pero si muy laboriosos.
En resumen, el funcionamiento de la APP seria el siguiente:

1) Arranca y consulta en la carpeta de la aplicación (File.DirDefaultExternal) si existe la base de datos
2) Si no existe se baja la del servidor y la pone en la carpeta que decidas que esté la base de datos
3) Si existe consulta ese fichero que te dice si tienes que actualizar (opción 1)
Si existe consulta si existe la base de datos en el servidor (opción 2)
3) Después de la consulta bajas o no la base de datos
4) Lees la base de datos de la carpeta donde está

Con este sistema evitas darle peso a la Apk poniendole la base de datos y automatizas todo el proceso sin conexiones usb, bluetooth ni nada.

Esto que te parecerá muy complejo es muy simple, primero haz pruebas con ese ejemplo que te he dicho hasta conseguir que te funcione, luego simplemente es adaptar ese código a la APP.

Si mientras pruebas ese ejemplo o lo adaptas a tu APP te surgen problemas, es tan simple como abrir un post y preguntar, como habrás podido comprobar te han dado buenas respuestas varios del foro.

Saludos
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…