Excuse me, I'm having problems to reply now, tomorrow I hope.
Thanks you very much !!!
. Utilizo Android 13
. Estoy probando con Companion via Wifi
. Adjunto los bloques de un programita de prueba.
-
Cuando le doy Exportar pone dos mensajes de error sobre permisos denegados para imágenes y videos ( cosa que no requiero en esta aplicación ) y no saca el dialogo con el File Exists. Sin embargo SÍ CREA EL FICHERO pruebaBD.bd en la ubicación solicitada.
-
Cuando le doy Importar el resultado del SELECT se corresponde con una base de datos asociada anteriormente a esta misma aplicación antes de modificarla como se muestra ahora.
Es decir, a pesar de que creó el fichero con la presunta salva de la BD, no importa nada en la importación donde debería haber sobrescrito la base de datos anterior.
En resumen, lo que necesito es cómo salvar mi base de datos actual en una carpeta accesible para poder copiarla a otro medio o abrirla con un browser de SQLite y cómo restaurar mi base de datos desde una salva en esa misma carpeta, por ejemplo.
Gracias
No issues here in the same environment.
Suggest you use the DBName block after EXPORTing, then you can work directly with the database in the Download directory, instead of IMPORTing into the default database every time.
You should also capture the location of the default database so that you can also set this as the DBName if you need to get back to it:
Not sure why your notifier is not working.
See the Guide:
Thanks, I will try again with your suggestions.
El problema del error que me da es por el el scope que tenía puesto el bloque File en shared , ahora lo puse en Legacy y salen las notificaciones pero despues de la exportación sigue diciendo qye el fichero no existe en /storage/emulated/0/Download/pruebaBD.db a pesar de que por fuera con Mis Archivos veo el fichero perfectamente. Parece que exporta pero File1.FileExist me sigue diciendo que no existe.

Sorry, i meant to mention this previously:
If you set the filescope to Legacy or Shared it defaults to /storage/emulated/0 so you have to put /Download/mysqlite.db in the path socket.
Alternately, use this from SimpleSqlite to show the path for the current database
The SImpleSqlite extension does not ask for this permission anywhere.
Are you using any other extensions that might be asking for it?
Are you directly asking for this permission ?
Utilizo la extensión SimpleSqlite y necesito importar un archivo de base de datos desde una carpeta en el scope shared.
SimpleSQlite.ImportDatabase no me permite hacerlo directamente desde una carpeta shared por lo que estoy tratando de copiar el archivo desde Descargas/salva hacia el ASD de la aplicación para después poder realizar la importación desde ahi con importDatabase.
Cuál sería la mejor forma de realizar la selección del archivo a importar ubicado en la carpeta shared Dowload/salva y posteriormente realizar su copia hacia el ASD de la aplicación para su posterior importación ?
Try the file picker component
Try the file component and its Copy method
Taifun
SimpleSQlite.ImportDatabase does not allow me to do it directly from a shared folder
It should. Show your relevant blocks.
this also happened to me.
This error show when I try to looked for not exists data. I'd simulated user typo in input email or username in login form.
here is my UI
Here is my block
and here is the error

how to handle the error?
What version of the extension are you using?
What is the location of the database file?
Did you open the database (you do not show that block)
Did your app create that file?
Version

db path:
Do It Result: "/data/user/0/edu.mit.appinventor.aicompanion3/databases/my_pos.db"
---
is database open block
I assume because the path is exists, the file should be exists, isn't it?
It might be interesting to know, when exactly the error occurs
Use the companion app and Do it to debug your blocks, see also tip 4 here App Inventor: How to Learn | Pura Vida Apps
see also Live Development, Testing, and Debugging Tools
Taifun
Trying to push the limits! Snippets, Tutorials and Extensions from Pura Vida Apps by
Taifun.
How did that database get into that directory ?
You should be setting the DBName before you open the database.
I don't know perhaps I just put any name like "my_pos.db" and I don't give any path of file should be. I assumed the database created automatically. should I set the .db called from assets? But, somehow when I insert and read data work perfectly. This error happened only when I assumed user entered typo email address it means I try to handle error, if there is no data, notifier should be shown.
when I call dbname in th first, the result still same.
OK, I believe I understand what you have done with the database naming, and why when requesting a value that does not exist is generating an error. I will need to run some changes and do some testing, then should be able to come back with a solution.
1. Database Naming
You appear to have discovered a feature I was unaware of !
If you do this:
![]()
If that db does not exist it is created, in the default location for sqlite databases:
/data/data/<packageName>/databases/my_pos.db
If that db exists, then it is set as the working database.
The default database - SimpleSqlite.db is still there, you have to use the DBName block to set that as the default:
![]()
When the app starts, it will use SimpleSqlite.db, unless a different db is set using the dbName property.
Important:
Whilst creating new databases in the default directory is a good thing from an app/data security viewpoint, there is, I understand, no way to list the contents of that directory (ref), so you will need to keep a record of any databases created there. This location is app specific, so only the app that created these databases can access them. There is also no method to delete the databases created in the default directory.
.
.
.
2. length=0; index=0 Runtime Error
when a query returns an empty array

I thought I had fixed this previously, which I had done for the SimpleSqlite1.Run - sql block, but some work was also required with the SimpleSqlite1.ListFixer - queryOutput block, which was not handling the return of an empty list. This should be fixed now with the following updated version of the SimpleSqlite extension:
If a query returns no results, you will get back an empty array/list -> [ ].
No doubt, and knowing my luck..., this will have a knock on effect somewhere else in the code ! ![]()
I have no doubt to say "You are awesome, sir!"
here is my last block and work perfectly as shown in video
working block
Block work perfectly
Video








