French Compiler avec SQLite

Discussion in 'French Forum' started by Beber, Oct 8, 2017.

  1. Beber

    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.
     
  2. imbault

    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:

    Code:
    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
     
  3. Beber

    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
     
  4. imbault

    imbault Well-Known Member Licensed User

    peut on voir ton code, File puis export as Zip

    Merci
     
  5. Beber

    Beber Member

    Voici le code de mon petit essai ... en vue d'un plus grand développement !

    Merci
     

    Attached Files:

  6. imbault

    imbault Well-Known Member Licensed User

    Just modify that in your Activity_Create

    Code:
    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)
     
  7. Beber

    Beber Member

    Super, ça marche.
    Je n'ai plus qu'à développer mon appli. !

    Merci beaucoup.
     
Loading...