2015-11-23 2 views
0

Я новичок в 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" 

Любые советы были бы очень ценными, спасибо.

+0

Я мог бы предложить использовать LoaderManager. Жизнь будет намного проще: http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html –

ответ

1

У вас есть несовпадение скобки ...

Cursor cursor = sqlDB.query(TaskContract.TABLE, // <-- open parenthesis 
       new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK, TaskContract.Columns.TEXT }, 
       null, null, null, null, null); // <-- close parenthesis with semi-colon. Cursor has been defined. 
       new Boolean []{TaskContract.Columns.FAVOURITE}, // <-- unexpected token error here 
       null, null, null); // <-- Additional close parenthesis 
       new Integer []{TaskContract.Columns.DATE }, 
       null, null, null); // <-- I suspect this is where you meant to end the cursor? 
+0

Я обновил свой вопрос. Любые намеки на это были бы очень оценены. –

+0

@ DWA2112 - Вы уже приняли этот ответ для своей первоначальной проблемы. Я предлагаю вам сделать новый пост, и я с радостью ответю на него. –

+0

Я бы хотел, но Stack Overflow не позволяет мне делать это в данный момент; поэтому я внес несколько изменений в мой вопрос, так как у меня все еще есть эта проблема и очень ценю помощь сообщества и любые дальнейшие намеки, спасибо! –

Смежные вопросы