我在Android中有一个sqlite3数据库。有一个可以使用的线程 数据库。从另一个线程,我想将sql文件复制到其他位置。我不知道数据库目前是否已关闭,或者可能在同一时刻正在进行交易。我可以假设文件的副本始终是有效的sqlite数据库吗?
由于sqlite中的事务是原子的,这看起来很合理,但我想确定。
使用DatabaseHelper
打开数据库,并SQLiteDatabase.insert
不时插入数据。有时数据库已关闭然后重新打开。
答案 0 :(得分:2)
数据库事务是原子的,但复制文件本身并不是数据库事务。
要确保没有其他SQLiteDatabase
对象可以访问数据库文件,请先执行BEGIN EXCLUSIVE。
只要您不更改此事务中的数据库,数据库文件就处于一致状态。