Я искал во всей сети решение этой проблемы, поэтому давайте надеяться, что кто-то здесь может помочь.
У моего приложения есть задача запуска, которая заполняет базу данных SQLite перед загрузкой главного меню.Второй вид деятельности, доступ к которому можно получить из главного меню, требует доступа к нему.Поэтому я закрываю базу данных в первом действии, чтобы остановить ошибки блокировки.
По какой-то причине в базе данных, по-видимому, нет строк, как только я закрываю соединение, как в том же действии, так и во втором действии.
Вот пример кода:
SQLiteDatabase db = getWritableDatabase(); // get instance of current database
db.beginTransaction(); // set exclusive mode to speed up
for(GulbArticle g : gulbArticles){
this.insert(g);
}
db.setTransactionSuccessful();
// counting here returns 315 rows using the all2() function below
db.close();
// counting here returns 0 rows using the all2() function below
Вот функция, которую я сделал, чтобы вернуть счет
public void all2(){
SQLiteDatabase db = getReadableDatabase();
String sql = "SELECT COUNT(*) FROM "+TABLE_NAME;
SQLiteStatement statement =db.compileStatement(sql);
long count = statement.simpleQueryForLong();
Log.v("ccount2",count+"");
}
Так что в обоих случаях я инициализируюэкземпляр базы данных, но по какой-то причине, как только я ее закрываю, я не могу открыть ее снова / в базе данных, похоже, ничего нет.Может быть, я упускаю что-то простое, но это действительно озадачило меня.