Не совсем верно. Пожалуйста, смотрите мой длинный ответ здесь:
Каковы лучшие практики для SQLite на Android?
Вы не повредите свою базу данных, но если два разных потока с двумя разными подключениями попытаются записать в БД одновременно, у вас будут проблемы. Один "проиграет". Они не будут ждать, чтобы запустить в порядке. Если вы вызовете «insert» вместо «insertOrThrow», вы даже не получите исключение. Вы просто не будете писать в БД.
Вот как работает Sqlite в Android. Каждый экземпляр SqliteOpenHelper имеет 1 подключение к базе данных. Неважно, сколько раз вы вызываете 'getRead / WriteableDatabase'. Один помощник, одно соединение. Кроме того, в коде соединения Android sqlite реализована собственная блокировка потоков, поэтому, если вы используете тот же SqliteOpenHelper и, соответственно, то же соединение, все будет в порядке.
Если, однако, вы используете более одного помощника, вы можете быть не в порядке.
Я подозреваю, что у вас может быть несколько потоков, читающих и 1, пишущих, и получится нормально, но я не проверял это.
Используете ли вы несколько потоков для записи производительности? Если это так, я бы предложил просто оптимизировать использование «транзакций». Если вы делаете несколько независимых записей, это ОЧЕНЬ медленно. Если вы упаковываете их все в пакет, это очень быстро (относительно). Я подозреваю, что это происходит потому, что при каждой независимой записи Android сбрасывается на диск (что очень медленно). Если вы делаете их в кучу, все изменения вносятся в 1 запись.
Что касается поддержки 1 экземпляра помощника, вот мой недавний пост в блоге об этом:
http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection
Я написал довольно сложную логику подсчета ссылок как часть моей ранней реализации порта OrmLite для Android, но я не думаю, что в данный момент все это необходимо.
http://touchlabblog.tumblr.com/post/24474455802/ormlite-for-android
Для полноты ссылок мой пост в блоге о блокировке sqlite и множественных соединениях:
http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking