2015-03-05 2 views
1

Я создаю приложение с заполнением списка из базы данных. Но всякий раз, когда я запускаю его, приложение crashes dueto java.lang.IllegalArgumentException: column '_id' не существует. Сначала у меня не было идентификатора поля. Тогда я сделал некоторые погуглите и обнаружил, что я должен добавить _id при использовании SimpleCursorAdapter .Но по-прежнему остается проблема ..Ошибка приложения из-за java.lang.IllegalArgumentException: column '_id' не существует

private static final String TABLE_CLASS_LIST = "classlist"; 

//class list column names 
    private static final String KEY_LIST_ID = "_id"; 
    private static final String KEY_SUBJECT_NAME_LIST = "subjectname"; 
    private static final String KEY_CLASS_DIV_LIST = "classdivision"; 


private static final String CREATE_CLASS_LIST = "CREATE TABLE " 
      + TABLE_CLASS_LIST + "(" + KEY_LIST_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_SUBJECT_NAME_LIST 
      + " TEXT," + KEY_CLASS_DIV_LIST + " TEXT)"; 



public void addClassList(ClassList classList) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_SUBJECT_NAME_LIST, classList.getSubject()); 
    values.put(KEY_CLASS_DIV_LIST, classList.getClassd()); 
    // values.put(KEY_CREATED_AT, user.getCreated_at()); 

    // insert row 
    long user_id = db.insert(TABLE_CLASS_LIST, null, values); 


} 


public Cursor fetchTableList() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor mCursor = db.query(TABLE_CLASS_LIST, new String[]{KEY_SUBJECT_NAME_LIST, 
        KEY_CLASS_DIV_LIST}, 
      null, null, null, null, null); 

    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

Выше мой dbhelper класс (не все).

А и моя активность

public class ClassActivity extends ActionBarActivity { 
    ListView classlist; 

    String value; 
    private SimpleCursorAdapter dataAdapter; 
    DatabaseHelper databaseHelper; 
    Cursor cursor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_class); 
    classlist = (ListView) findViewById(R.id.listClass); 
    databaseHelper = new DatabaseHelper(this); 
    String[] arrayColumns = new String[]{"classdivision", "subjectname"}; 
    int[] arrayViewIDs = new int[]{R.id.classid, R.id.subject}; 

    cursor = databaseHelper.fetchTableList(); 
    dataAdapter = new SimpleCursorAdapter(
      this, R.layout.classlist_single_item, 
      cursor, 
      arrayColumns, 
      arrayViewIDs, 
      0); 


    classlist.setAdapter(dataAdapter); 
    value = getIntent().getExtras().getString("add"); 
+0

Вы должны удалить ваши приложения или очистить данные, чтобы r база данных, которая будет воссоздана с помощью столбца '_id'. –

+0

Я сделал это уже ..... –

+0

Решение @blackbelt работало. –

ответ

1

проекция вашего запроса является отсутствует поле _id,

Изменить

Cursor mCursor = db.query(TABLE_CLASS_LIST, new String[] { KEY_SUBJECT_NAME_LIST, KEY_CLASS_DIV_LIST}, 
     null, null, null, null, null); 

в

Cursor mCursor = db.query(TABLE_CLASS_LIST, new String[] { KEY_LIST_ID, KEY_SUBJECT_NAME_LIST, KEY_CLASS_DIV_LIST}, 
     null, null, null, null, null); 
+0

Спасибо ... это сработало –

+0

добро пожаловать – Blackbelt

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