Adding this line in my Android code forced the commit from the wal
file into the main database:

db.rawQuery("PRAGMA wal_autocheckpoint = 1", null);
// db is an instance of SQLiteDatabase, i.e.
// SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(/sdcard/
mydb.db, null);

I use autocheckpoint value of 1, which is the page size that will
trigger the checkpoint. The default is 1000.

I noticed the same behavior when the onUpgrade() method would add new
tables to the main database, but I didn't see them when querying
the .db file. If I tried to re-add the tables through code, I would
get SQL Exceptions that the tables already existed (in the wal file).
The application I am working on was written on an Android 1.6 platform
(prior to sqlite 3.7 and before WAL was added to sqlite). I just
noticed the onUpgrade() issue running the application on an Android
2.3.4 device which has sqlite 3.7.


Hope that helps

On Jan 13, 1:35 am, Susan <smxb...@gmail.com> wrote:
>    I want to copy database file to SD card. But Write-Ahead Log (wal
> file) has not writen to db file. It will write to db file when
> checkpoint occurs as the SQLite offical document said 
> :http://www.sqlite.org/wal.html#ckpt.
>    So is there an API I can trigger a checkpoint of database, so after
> that I can copy the db file to SD card?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to