French Compiler avec SQLite

Beber

Member
Bonjour,

j'ai fait un essai sous B4A de code en lien avec une bdd SQLite.
J'ai compilé et installer l'appli. sur un appareil sous Android. Tout fonctionne : lecture de données, ajout de données.

Mon problème est que si je recompile et réinstalle une nouvelle version, les données sur mon appareil sont écrasées par celles présentes sur le PC qui sert à compiler !

Comment installer une nouvelle version sans perdre les données déjà saisies sur l'appareil ?

Merci.
 

imbault

Well-Known Member
Licensed User
Tu peux checker l'existence de ta db, si elle n'existe pas, tu la crées, sinon tu l'ouvres, un peu comme cela:

B4X:
    Dim ProgDB As String = "sites.db"
    If  Not(File.Exists(File.DirDefaultExternal, ProgDB)) Then
        Log("create db")
        dbSQL.Initialize(File.DirDefaultExternal, ProgDB, True)
        'Delete old tables and create new ones.
        Dim m As Map
        m.Initialize


        m.Put("id", dbutils.DB_INTEGER)
        m.Put("name", dbutils.DB_TEXT)
        m.Put("address1", dbutils.DB_TEXT)
        m.Put("address2", dbutils.DB_TEXT)
        m.Put("city", dbutils.DB_TEXT)
        m.Put("zip", dbutils.DB_TEXT)
        m.Put("country", dbutils.DB_TEXT)
        m.Put("email", dbutils.DB_TEXT)
        m.Put("phone", dbutils.DB_TEXT)
        m.Put("fax", dbutils.DB_TEXT)
        m.Put("lat", dbutils.DB_TEXT)
        m.Put("long", dbutils.DB_TEXT)
        m.Put("type", dbutils.DB_TEXT)
 
        dbutils.CreateTable(dbSQL, "sites", m, "id") 
    Else
        dbSQL.Initialize(File.DirDefaultExternal, ProgDB, False)
    End If
 

Beber

Member
Bonjour et merci pour cette réponse rapide.
Mais je ne comprends pas ou alors je me suis mal expliqué.

Mon soucis vient qu'en installant une nouvelle version de l'appli. sur mon appareil Androïd, j'écrase les données déjà saisies dans la bdd de mon appareil.
L'installation du . apk semble installer aussi la bdd SQLite du PC avec son contenu et donc écrase les données de la bdd de l'appareil.
Je n'ai pas la possibilité d'intervenir puisque ça se passe à l'installation.

Dans le code, j'initialise bien la bdd avec
Bdd.Initialize(File.DirDefaultExternal,"Essai.db",False)​
dans la partie Activity Create.

Merci
 

imbault

Well-Known Member
Licensed User
Just modify that in your Activity_Create

B4X:
    If Not(File.Exists(File.DirDefaultExternal,"Essai.db")) Then
        If File.Exists(File.DirAssets,"Essai.db") Then
            File.Copy(File.DirAssets,"Essai.db",File.DirDefaultExternal,"Essai.db")
        End If
End If
Bdd.Initialize(File.DirDefaultExternal,"Essai.db",False)
 
Top