Эй, я недавно начал разработку Android и столкнулся с проблемой при сохранении / загрузке данных из базы данных. Я взял класс базы данных из здесь с некоторыми небольшими изменениями.
Моя проблема в том, что у меня есть активность с некоторыми правками. При onCreate строки из базы данных должны быть записаны в текстовые правки, а при нажатии кнопки данные в базе данных должны быть обновлены, а активность закрыта. Для случая, когда база данных пуста, я добавил условие if с cursor.getCount! = 0 для чтения базы данных, но это условие никогда не выполняется.
Вот мой код
package com.gabrielisonline.timetable;
public class DurationActivity extends Activity {
DbAdapter dba;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.duration);
Button saveButton = (Button) findViewById(R.id.duration_button1);
saveButton.setOnClickListener(new SaveButtonListener());
dba = new DbAdapter(this);
dba.open();
Cursor c = dba.fetchAllDurations();
if (c.getCount() != 0) {
int i = c.getColumnIndex(DbAdapter.KEY_TIME);
((EditText) findViewById(R.id.duration_length)).setText(dba.fetchDuration(0).getString(i));
((EditText) findViewById(R.id.duration_lesson1)).setText(dba.fetchDuration(1).getString(i));
((EditText) findViewById(R.id.duration_lesson2)).setText(dba.fetchDuration(2).getString(i));
((EditText) findViewById(R.id.duration_lesson3)).setText(dba.fetchDuration(3).getString(i));
((EditText) findViewById(R.id.duration_lesson4)).setText(dba.fetchDuration(4).getString(i));
((EditText) findViewById(R.id.duration_lesson5)).setText(dba.fetchDuration(5).getString(i));
((EditText) findViewById(R.id.duration_lesson6)).setText(dba.fetchDuration(6).getString(i));
((EditText) findViewById(R.id.duration_lesson7)).setText(dba.fetchDuration(7).getString(i));
((EditText) findViewById(R.id.duration_lesson8)).setText(dba.fetchDuration(8).getString(i));
((EditText) findViewById(R.id.duration_lesson9)).setText(dba.fetchDuration(9).getString(i));
((EditText) findViewById(R.id.duration_lesson10)).setText(dba.fetchDuration(10).getString(i));
}
}
public class SaveButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
String l = ((EditText) findViewById(R.id.duration_length)).getText().toString();
String l1 = ((EditText) findViewById(R.id.duration_lesson1)).getText().toString();
String l2 = ((EditText) findViewById(R.id.duration_lesson2)).getText().toString();
String l3 = ((EditText) findViewById(R.id.duration_lesson3)).getText().toString();
String l4 = ((EditText) findViewById(R.id.duration_lesson4)).getText().toString();
String l5 = ((EditText) findViewById(R.id.duration_lesson5)).getText().toString();
String l6 = ((EditText) findViewById(R.id.duration_lesson6)).getText().toString();
String l7 = ((EditText) findViewById(R.id.duration_lesson7)).getText().toString();
String l8 = ((EditText) findViewById(R.id.duration_lesson8)).getText().toString();
String l9 = ((EditText) findViewById(R.id.duration_lesson9)).getText().toString();
String l10 = ((EditText) findViewById(R.id.duration_lesson10)).getText().toString();
dba.updateDuration(0,l);
dba.updateDuration(1,l1);
dba.updateDuration(2,l2);
dba.updateDuration(3,l3);
dba.updateDuration(4,l4);
dba.updateDuration(5,l5);
dba.updateDuration(6,l6);
dba.updateDuration(7,l7);
dba.updateDuration(8,l8);
dba.updateDuration(9,l9);
dba.updateDuration(10,l10);
dba.close();
finish();
}
}
}
Спасибо за вашу помощь!
EDIT:
Спасибо за ваши ответы, ребята. Проблема была в том, что я действительно не записал что-то в базу данных. Вместо того, чтобы просто использовать updateDuration, я изменил код в методе onClick:
if (c.getCount() != 0) {
dba.updateDuration(1,l);
dba.updateDuration(2,l1);
dba.updateDuration(3,l2);
dba.updateDuration(4,l3);
dba.updateDuration(5,l4);
dba.updateDuration(6,l5);
dba.updateDuration(7,l6);
dba.updateDuration(8,l7);
dba.updateDuration(9,l8);
dba.updateDuration(10,l9);
dba.updateDuration(11,l10);
} else {
dba.createDuration(l);
dba.createDuration(l1);
dba.createDuration(l2);
dba.createDuration(l3);
dba.createDuration(l4);
dba.createDuration(l5);
dba.createDuration(l6);
dba.createDuration(l7);
dba.createDuration(l8);
dba.createDuration(l9);
dba.createDuration(l10);
}
Теперь все работает. Я думал, что метода обновления будет достаточно и для первой записи в базу данных (createDuration вызывает метод create для базы данных в DbAdapter, а updateDuration вызывает update).