Я новичок в Android и работаю над простым списком «Сделать список».Обновление базы данных вызывает ошибки в представлении «Список дел»
Он содержит функцию, которая обновляет пользовательский интерфейс, когда элемент из списка To Do удаляется или добавляется. Должно быть добавлено описание To do's, а также возможность отметить их как фаворита и дату истечения срока действия. Поэтому я добавил еще три поля в класс помощника базы данных.
Это мой TaskDBhelper.java класс:
package com.example.TodoList.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class TaskDBHelper extends SQLiteOpenHelper {
public TaskDBHelper(Context context) {
super(context, TaskContract.DB_NAME, null, TaskContract.DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqlDB) {
String sqlQuery =
String.format("CREATE TABLE %s (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"%s TEXT)", TaskContract.TABLE,
TaskContract.Columns.TASK,
TaskContract.Columns.TEXT,
TaskContract.Columns.DATE,
TaskContract.Columns.FAVOURITE
);
Log.d("TaskDBHelper", "Query to form table: " + sqlQuery);
sqlDB.execSQL(sqlQuery);
}
@Override
public void onUpgrade(SQLiteDatabase sqlDB, int i, int i2) {
sqlDB.execSQL("DROP TABLE IF EXISTS "+TaskContract.TABLE);
onCreate(sqlDB);
}
}
Это мой TaskContract.java:
package com.example.TodoList.db;
import android.provider.BaseColumns;
public class TaskContract {
public static final String DB_NAME = "com.example.TodoList.db.tasks";
public static final int DB_VERSION = 1;
public static final String TABLE = "tasks";
public static class Columns {
public static final String TASK = "task";
public static final String _ID = BaseColumns._ID;
public static final String TEXT = "text";
public static final String FAVOURITE = "favourite";
public static final String DATE = "date";
}
}
Это функция updateUI() в MainActivity.java, который бросает ошибки, при оказании деятельности:
private void updateUI() {
helper = new TaskDBHelper(MainActivity.this);
SQLiteDatabase sqlDB = helper.getReadableDatabase();
Cursor cursor = sqlDB.query(TaskContract.TABLE,
new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK, TaskContract.Columns.TEXT,
String.valueOf(TaskContract.Columns.FAVOURITE), TaskContract.Columns.DATE},
null, null, null, null, null
);
listAdapter = new SimpleCursorAdapter(
this,
R.layout.task_view,
cursor,
new String[]{TaskContract.Columns.TASK}, //TaskContract.Columns.DESCRIPTION },
new int[]{R.id.taskTextView},
0
);
this.setListAdapter(listAdapter);
}
При получении приложения появляется следующее сообщение об ошибке: :
"android.database.sqlite.SQLiteException: no such column: text (code 1): , while compiling: SELECT _id, task, text, favourite, date FROM tasks"
Любые советы были бы очень ценными, спасибо.
Я мог бы предложить использовать LoaderManager. Жизнь будет намного проще: http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html –