Italian [B4A] Comunicare il database

Aldo's

Active Member
Licensed User
Con il titolo ci si capisce veramente poco. Chiedo scusa.
Ho una app su B4A che popola un database.
Vorrei eseguire un salvataggio del database su un supporto diverso, che possa essere a portata di PC.
Eventualmente vorrei fare anche l'operazione inversa: il database su PC mandarlo sul supporto mobile.
Il database è un SQLite molto semplice e di dimensioni contenute.
Io non ho familiarità con operazioni in rete...mi servirebbe un aiuto.
Grazie
 

Abdull Cadre

Active Member
Licensed User
Forse questo ti aiuterà:

 

Aldo's

Active Member
Licensed User
Forse questo ti aiuterà:

Provo e ti dico
 

Aldo's

Active Member
Licensed User

Abdull Cadre

Active Member
Licensed User
Scusa l'ignoranza, quali sono i motivi principali per scegliere uno di questi due tipi di soluzione?
Grazie
SQLite Lite è un database integrato: non richiede un server.

È leggero e semplice, ma non è facile sincronizzare le informazioni tra i dispositivi in rete

Mysql offre un solido supporto client-server, questa è la soluzione che stai cercando adesso.

Supabase è uguale a Firebase, mi piace perché non devo preoccuparmi dell'architettura, uso solo il database
 

Aldo's

Active Member
Licensed User
SQLite Lite è un database integrato: non richiede un server.

È leggero e semplice, ma non è facile sincronizzare le informazioni tra i dispositivi in rete

Mysql offre un solido supporto client-server, questa è la soluzione che stai cercando adesso.

Supabase è uguale a Firebase, mi piace perché non devo preoccuparmi dell'architettura, uso solo il database
Quindi il tuo consiglio finale è MySQL o Supabase?
Grazie ancora
 

udg

Expert
Licensed User
Longtime User
Ciao. Se la portata della tua app è tale da non giustificare server esterni, allora puoi seguire una delle molteplici strade che la suite B4X ti consente.
Immaginiamo che in fase di installazione la tua app crei da codice il suo DB SQLlite. O anche che ne abbia una copia di base in DirAsset e la copi in locale.
Presumiamo anche che la directory dove il DB viene copiato/creato sia quella derivante da XUI.DefaultFolder (scelta consigliata).

Le prime tre alternative semplici che vengono in mente (in nessun ordine particolare) sono:
- FTP (meglio sFTP) verso un tuo server del/dei file che costituiscono il DB (dipende dall'opzione "wallet")
- Utilizzo di GDrive (e simili) come area di parcheggio (backup) o scambio (smartphone/PC e viceversa)
- Email dove il DB è l'allegato

Chiaramente è importante che tu abbia bene in mente lo scopo di questa operazione e anche la platea di utilizzatori.

udg
 

Aldo's

Active Member
Licensed User
Immaginiamo che in fase di installazione la tua app crei da codice il suo DB SQLlite. O anche che ne abbia una copia di base in DirAsset e la copi in locale.
La seconda che hai detto!

Presumiamo anche che la directory dove il DB viene copiato/creato sia quella derivante da XUI.DefaultFolder (scelta consigliata).
A dire il vero è su File.DirInternal, meglio XUI.DefaultFolder?

Chiaramente è importante che tu abbia bene in mente lo scopo di questa operazione e anche la platea di utilizzatori.
In questo momento è solo ad uso personale.

Le prime tre alternative semplici che vengono in mente (in nessun ordine particolare) sono:
- FTP (meglio sFTP) verso un tuo server del/dei file che costituiscono il DB (dipende dall'opzione "wallet")
- Utilizzo di GDrive (e simili) come area di parcheggio (backup) o scambio (smartphone/PC e viceversa)
- Email dove il DB è l'allegato
Credo che la seconda e la terza sono le scelte più agevoli (almeno per me!).
Io posso inviare Email con db allegato, già fatto in passato.
Però quando ricevo da PC l'email con db allegato: dove trovo il db? come lo sposto in File.DirInternal o XUI.DefaultFolder?

Grazie
 

udg

Expert
Licensed User
Longtime User
Dalla definizione di XUI.DefaultFolder:
B4A - Same as File.DirInternal.
B4i - Same as File.DirDocuments.
B4J - Same as File.DirData. You must first call SetDataFolder once before you can use this folder.

Erel consiglia di utilizzare XUI.DefaultFolder anche perchè così il codice resta valido sulel altre piattaforme.

Però quando ricevo da PC l'email con db allegato: dove trovo il db? come lo sposto in File.DirInternal o XUI.DefaultFolder?
Non so se sul Forum ci sia qualche esempio già sviluppato. Sostanzialmente si tratta di:
- dalla app di gestione email, salvare l'allegato in un'area ancora raggiungibile dalla tua app (dico ancora perché ad ogni giro vengono introdotte restrizioni, divieti e minacce di fucilazione)
- intercettare l'arrivo della mail (un intent?), eventualmentei individuata tramite un oggetto particolare, e salvare l'allegato come file temporaneo in XUI.DefaultFolder, poi procedere a rinominare il vecchio file, rinominare il nuovo, eliminare il vecchio file e far ripartire l'app. O alternare tra DB1 e DB2; Insomma, anche su questo punto hai più possibilità.
Parti dalla ricerca di qualcosa di pronto, magari sei fortunato.
 

udg

Expert
Licensed User
Longtime User
Il tema ha destato un minimo di curiosità in me e ho provato a cercare qualcosa di pronto.
Qui trovi un link del 2020 il cui codice va sicuramente aggiornato, ma intanto ti dice che qualcosa di simile è stato fatto in passato
Oppure, se non trovi nulla di utile o vedi che le opzioni sembrano infiniite e generano confusione, prova ad iniziare un thread tipo "Email attachment reading 2024" e vedere se qualcuno ti suggerisce una strada semplice e, soprattutto, in linea con le ultime restrizioni.
 

LucaMs

Expert
Licensed User
Longtime User
Supabase.

Alle mie orecchie suona nuovo (e non amo moltissimo le novità, essendo io... "differentemente giovane" 😄:confused:) ma, soprattutto, mi fa subito venire in mente una parola siciliana, per cui preferirei altro 😄
(Lo scrivo perché vedo in giro che @Aldo's ci sta lavorando).
 

Aldo's

Active Member
Licensed User
Supabase.

Alle mie orecchie suona nuovo (e non amo moltissimo le novità, essendo io... "differentemente giovane" 😄:confused:) ma, soprattutto, mi fa subito venire in mente una parola siciliana, per cui preferirei altro 😄
(Lo scrivo perché vedo in giro che @Aldo's ci sta lavorando).
Caro @LucaMs in quanto a "differentemente giovane" anch'io non scherzo. Però mi sono approcciato tardi a B4X e a tutte le sue dinamiche per cui, per me, ogni giorno è una scoperta.
Volevo passare da db sul device a db in rete e la soluzione Supabase mi è sembrata molto interessante e percorribile (così come altre). @Alexander Stolte ha fatto una splendida libreria e facilita di molto il lavoro di interazione con il database.
Relativamente al nome...finchè non si chiama Belinbase per me va bene 😂
 

LucaMs

Expert
Licensed User
Longtime User
finchè non si chiama Belinbase per me va bene
Ok, ma avrai intuito, nel mio post preDecente, a quale parola siciliana mi riferisca 😄. Diciamo: una "c" al posto di una "p".

Cmq, a parte i suggerimenti precedenti (comodo e facile anche PHP ed anche per questo troveresti tanti esempi utili, qui sul sito), se proprio dovessi preferirei Firebase, per vari motivi, uno dei quali è il potere di Google!
 

moore_it

Well-Known Member
Licensed User
Longtime User
Visto che usi un server FTP copiatelo in una cartella dell'FTP e poi ci fai quel che vuoi.
Puoi anche scaricarlo e sostituirlo io in un'app faccio così.
 
Top