Italian Creare db contatti o ...

ivanomonti

Expert
Licensed User
Longtime User
Ho bisogno di fare un app che possa verificare un contatto nella quale associo un valore tipo gree,red,black esempio e in base a quel valore si scatena un evento.

non so se creare un db separato dove gestisco questa lista o se posso relazionare delle tabelle al db già esistente.

chi mi consiglia, anche privatamente.
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao Ivan. non so se puoi scriverci all'interno dei contatti.
io fare un db a parte associando pero' il numero di telefono e non il nome del contatto
Ad ogni avvio devi pero' verificare che il contatto esista ancora
ciaooooooo
mamo

Ciao e grazie, volevo chiederti anche questo, oggi volevo mettere in pratica il tuo consiglio ma ho dei problemi di questo tipo

1) creare db da codice e possibile? ... Come devo procedere o altrimenti come procedo in caso contrario.
2) vorrei creare folder di installazione in modo che se uno elimina il software si elimini tutto il resto ... anche qui come procedo per la strada migliore.

Grazie a tutti.
 
D

Deleted member 103

Guest
Ciao ivanomonti,

2) vorrei creare folder di installazione in modo che se uno elimina il software si elimini tutto il resto ... anche qui come procedo per la strada migliore.

io ti consiglio di usare questi due folder, perchè questi vengono eliminati quando elimini il software.

B4X:
File.DirInternal
File.DirDefaultExternal

Ciao,
Filippo
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao ivanomonti,



io ti consiglio di usare questi due folder, perchè questi vengono eliminati quando elimini il software.

B4X:
File.DirInternal
File.DirDefaultExternal

Ciao,
Filippo

si ma come, non capisco, scusa la mia ottusita, come uso questi comandi, ad esempio io voglio creare una mia folder esempio ivanomonti come faccio?

intanto vado a leggere il manuale

grazie ancora
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Ivanmonti
Certo che puoi creare db da codice
A suo tempo avevo studiato il modulo dbutils
dbutils
Su Alfadesk creo tutto da codice. Piu' facile gestire il tutto anche per ampliamenti futuri del database
Per il resto vedo che ti ha gia' risposto Filippo
Pre creare una cartella il comando e'
File.MakeDir(File.DirInternal,"Nome Cartella")
ciaooo
Mamo
 

ivanomonti

Expert
Licensed User
Longtime User
Ciao ivanomonti,



io ti consiglio di usare questi due folder, perchè questi vengono eliminati quando elimini il software.

B4X:
File.DirInternal
File.DirDefaultExternal

Ciao,
Filippo

Ciao filippo, mi perdo su un concetto, il db visto che va crearo prima dove lo inserisco nel progetto, perchè non riesco a capire la root del db dove deve stare

Esempio folder project

Folder Files
Folder Objects
main.b4a

il db dove lo devo inserire, perche non trovo soluzione, scusa se rompo ma forse mi sto perdendo in un bicchiere d'acqua.

Cordialmente Ivano Monti
 

ivanomonti

Expert
Licensed User
Longtime User
Non ho capito se lo crei da codice ?
Se si puoi sempre prima creare le cartelle suggerite da Filippo e poi crei il db
ciaooo
Mamo

Da codice non ho capito come, perché da codice vuol dire tutto db + table +field, ma mi sembra di aver capito non sia possibile.

Quindi ho messo un db fittizio (vuoto) in files e procedo in questo modo

B4X:
If File.ExternalWritable Then dirPath = File.DirDefaultExternal Else dirPath = File.DirInternal
   If File.Exists(dirPath,"maindb.db") Then
      If FirstTime Then 
         SQLS.Initialize (dirPath, "maindb.db", True) 
       End If
   Else
   dirPath = CopyDB("maindb.db")
      If File.Exists(dirPath,"maindb.db") Then
         SQLS.Initialize(dirPath, "maindb.db", True)
         Msgbox("Copy db ok","")
      Else
         Msgbox("no db","")
      End If
   End If

Function

B4X:
Sub CopyDB(FileName As String) As String
   Dim TargetDir As String
   If File.ExternalWritable Then TargetDir = File.DirDefaultExternal Else TargetDir = File.DirInternal
   If File.Exists(TargetDir, FileName) = False Then
         File.Copy(File.DirAssets, FileName, TargetDir, FileName)
   End If
   Return TargetDir
End Sub

Nell' EMULATORE funziona in quanto mi ritorna ok, ma ora vorrei capire come crearlo interamente da codice, il perchè ogni avvio dell'app (Emulatore) mi ricrea il db in fase debug

Grazie per le gentili risposte.
 

maxware

Well-Known Member
Licensed User
Longtime User
...Da codice non ho capito come, perché da codice vuol dire tutto db + table +field, ma mi sembra di aver capito non sia possibile.

Come non e' possibile. E' possibilissimo. In AlfaDesk faccio tutto da codice.Come ti avevo scritto giorni fa vediti il modulo Dbutils. trovi tutti gli esempi per crearlo da codice.
Ora non so cosa deve fare la tua app ma faccio una considerazione. L'utente che utilizza l'app puo' modificare / aggiungere / eliminare record ?? Se si come gestisci puoi una versione di aggiornamento della App se gli rimetti il tuo db originale ???
Ciaoooooo
Mamo
 

ivanomonti

Expert
Licensed User
Longtime User
...Da codice non ho capito come, perché da codice vuol dire tutto db + table +field, ma mi sembra di aver capito non sia possibile.

Come non e' possibile. E' possibilissimo. In AlfaDesk faccio tutto da codice.Come ti avevo scritto giorni fa vediti il modulo Dbutils. trovi tutti gli esempi per crearlo da codice.
Ora non so cosa deve fare la tua app ma faccio una considerazione. L'utente che utilizza l'app puo' modificare / aggiungere / eliminare record ?? Se si come gestisci puoi una versione di aggiornamento della App se gli rimetti il tuo db originale ???
Ciaoooooo
Mamo

Si sto seguendo quell'esempio, e ho messo a punto quasi tutto, ma la creazione da zero del db non la trovo o forse sono ottuso, se hai pazienza ad indicarmi quale metodo devo studiarmi mi fai una grossa cortesia.

La mia applicazione prevede dei setting e dei dati provenienti da rubrica, gps


Cordialmente Ivano Monti
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciaoo
Dunque in soldoni
nella Process_Globals mewtti una variabile
Dim SQL As SQL

Inizializza il db nella activiry create
If FirstTime Then
SQL.Initialize(cartella database, "nome database.db", True)
end if

per creare una tabella fai

Dim m As Map
m.Initialize
m.Put("Id", DBUtils.DB_TEXT)
m.Put("Campo1", DBUtils.DB_TEXT)
m.Put("campo2", DBUtils.DB_INTEGER)
ecc.ecc.
DBUtils.CreateTable(SQL, "Nome Tabella", m, "Id")

per cancellare una tabella fai
DBUtils.DropTable(SQL, "Nome Tabella")

Ciaoo
Mamo
 

ivanomonti

Expert
Licensed User
Longtime User
Bei soldoni hahaha, ma scusa questa stringa crea un db dal nulla senza doverlo copiare da una parte...

If FirstTime Then
SQL.Initialize(miapath, "miodb.db", True)
end if

Questo crea da zero il db sqlite ... confermami solo questo tutto il resto e già fatto.
 

ivanomonti

Expert
Licensed User
Longtime User
Scusa ultimo dubbio poi ti invio i soldoni, con questo codice mi sa che io creo il db ogni volta,

B4X:
Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("Main")
   If File.ExternalWritable Then dirPath = File.DirDefaultExternal Else dirPath = File.DirInternal
      If File.Exists(dirPath,"maindb.db") Then
         If FirstTime Then
         SQLS.Initialize(dirPath, "main.db", True)
         Msgbox("Initialize db","System")
         End If
      Else
         createDB
      End If
End Sub

Ho paura di cannare la precudura...che all'avvio se non trova db lo deve creare altrimenti istanziare. Mi sto guardando il tuo codice ma cè un botto di info.

Grazie per la pazienza.
 

arenaluigi

Well-Known Member
Licensed User
Longtime User
Nell'activity create metti questo codice:

B4X:
If Not (File.Exists(File.DirInternal,"database.s3db")) Then
      File.Copy(File.DirAssets, "database.s3db", File.DirInternal, "database.s3db")
   End If
Spero che ti possa tornare utile.
 
Top