我想了解多线程访问ATTACHED sqlite数据库所涉及的问题。显而易见的是,一个SQLiteOpenHelper
可确保一个数据库连接,从而确保对数据库的一个序列化访问。当一个“子”数据库连接两次,在两个不同的“父”SQLiteOpenHelper
s /两个不同的父数据库连接下时会发生什么?Android中的附加sqlite数据库和多线程问题
Q1:如何访问连接的子数据库序列化?问题2:在这种情况下如何提前写入日志记录?
需要明确的是,这是我所描述的情景:
ASQLiteOpenHelper instanceA = new ASQLiteOpenHelper(context, dbnameA, null, version);
BSQLiteOpenHelper instanceB = new BSQLiteOpenHelper(context, dbnameB, null, version);
instanceA.getWritableDatabase().execSQL("ATTACH '" + dbnameChild + "' AS child");
instanceB.getWritableDatabase().execSQL("ATTACH '" + dbnameChild + "' AS child");
通过instanceA
和instanceB
同时安全写入“孩子”?阅读怎么样?如果为家长启用writeahead日志记录,是否也为孩子启用?如果是,是为child
创建的两个单独的预写日志记录吗?
看起来'DB'是一个共享资源,'SQLiteOpenHelpers'的多个实例正在访问'DB'。请纠正我,如果我错误解释你的情况。 – guptakvgaurav
我认为你错误地解释了我的情况。有三个独立的数据库:dbnameA,dbnameB和dbnameChild。这两个助手每个都打开一个不同的数据库。但是,第三个数据库dbnameChild连接到两个助手下。 – zyamys
因此,dbnameChild是两个助手的共享资源。是不是 – guptakvgaurav