Am I missing something? Everytime I run the dbutils program in my test environment the database is recreated and reinitialized as though it didn't exist from the last time I run the program. The same thing happens on my own test app. Why? I don't restart the emulator, and I don't erase user data. What if I need to keep database persistant through installs?
This is my code. Everytime I restart the program from the IDE or the emulator
B4X:
If FirstTime Then
Dim dbDir As String
Dim dbVer As Int
If File.ExternalWritable Then
dbDir = File.DirDefaultExternal
Else
dbDir = File.DirInternal
End If
dmDRDB.Initialize(dbDir,"dmDiceRoller.db",True)
dbVer=DBUtils.GetDBVersion(dmDRDB)
Log("DBVersion " & dbVer)' I get 1 ALWAYS
DBUtils.SetDBVersion(dmDRDB,2)
dbVer=DBUtils.GetDBVersion(dmDRDB)
Log("DBVersion " & dbVer) 'I get 2
End If
I tested with 2.2 emulator and it didn't work. Then I tested on a 3.0 emulator and it worked! I have no idea why. And it still keeps deleting the database in 2.2 where I run again from the run statement in b4a. There seems to be a difference in how the install is behaving.
Try using File.DirRootExternal instead of DirDefaultExtarnal. I believe that there is an issue with some emulators that cause them to recreate this folder each time.
Great! Thanks. There should be a list of those bugs by Google!!! So far I have found that 2.3 doesn't do Landscape, and 2.2 doesn't do DirDefaultExternal. 250000 apps later...