таблицы (т.е. вакцин) структура:андроид SQLite - данные таблицы не могут быть обновлены
id- автоматическое приращение первичного ключа
dose1_date - строка
dose2_date - строка
DatabaseAccessor
класс выглядит следующим образом. Методы initDB()
и setVaccineDates
вызывают из другой активности. Но база данных не обновляется. Однако зарегистрированное сообщение найдено в logcat. Класс DatabaseHelper
здесь не показан.
public class DatabaseAccessor {
public static DataBaseHelper myDbHelper = null;
public static SQLiteDatabase rdb = null;
public static SQLiteDatabase wdb = null;
public static synchronized final void initDB(Context context) throws Exception {
if (myDbHelper == null) {
myDbHelper = new DataBaseHelper(context);
myDbHelper.openDataBase();
rdb = myDbHelper.getReadableDatabase();
wdb = myDbHelper.getWritableDatabase();
}
}
public static void setVaccineDates(String birthDate) throws SQLException{
try {
String[] selections = null;
String qry = null;
qry = "select * from vaccines order by id";
Cursor cursor = wdb.rawQuery(qry, selections);
Log.d("update qry===== ", qry);
while (cursor.moveToNext()) {
int rowID = Integer.parseInt(cursor.getString(0));
ContentValues values = new ContentValues();
values.put("dose1_date","66666");
values.put("dose2_date","7777");
wdb.update("vaccines", values, "id=?", new String[] {String.valueOf(rowID)});
//wdb.close();
}
cursor.close();
} catch (Exception e) {
e.printStackTrace();
}
}// end of method setVaccineDates
}
Что делать?
Edit: Если я раскомментировать wdb.close()
линию, я вижу в LogCat
'06 -09 04: 21: 05,387: W/System.err (4144): java.lang.IllegalStateException: попытка повторно открыть уже закрытый объект: SQLiteDatabase: /data/data/com.cloudsoft.vaccine/databases/vaccines2.db '
10 Очевидно, что после закрытия вы пытаетесь обновить внутри цикла. – Bharatesh
Знаете ли вы, что вы достигли цикла while? Ваша таблица заполнена? –
@ DanielK, я сказал, что сообщение logcat видно –