Я пытаюсь запросить базу данных с одной таблицей, которую я создал в своем коде. Насколько я знаю, база данных создается правильно. Предполагается, что запрос используется для заполнения ListView, но когда я пытаюсь использовать результирующий курсор из моего запроса для создания SimpleCursorAdapter, он завершается с: java.lang.IllegalArgumentException: столбец '_id' не существует. Я предполагаю, что это можно проследить до курсора, а также курсор кажется пустым.
База данных создается в onCreate () моей реализации SQLiteOpenHelper следующим образом:
db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT NOT NULL, title TEXT NOT NULL, path TEXT NOT NULL);");
И тогда фактический запрос устанавливается и выполняется в моем классе DataHelper, который используется для взаимодействия с базой данных:
public Cursor selectEntryStartsWith(String partialName , String title)
{
String where = "name LIKE '" + partialName + "%' AND title LIKE '" + title + "'";
if (title== null || title.equals("")){
where = "name LIKE '" + partialName + "%'";
}
Cursor cur = mDatabase.query(TABLE_NAME, new String[] {"_id", "name", "title"}, where, null, null, null, "name");
return cur;
}
Код, который использует курсор, выглядит следующим образом:
Cursor cursor = mDataHelper.selectEntryStartsWith("ex", null); //get all entries that start with "ex"
String [] from = new String [] { "name", "title" };
int [] to = new int [] { R.id.name, R.id.title };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(mContext, R.layout.listview_entry, cursor, from, to);
songList.setAdapter(adapter);
Я использую вкладки, чтобы этот последний фрагмент кода находился внутри onActivityCreated () фрагмента; Я не думаю, что было бы лучше расширить ListFragment, но я не думаю, что это проблема здесь, в частности.
Извините, если я пропустил информацию, которая может вам потребоваться, я уже некоторое время бьюсь над этой проблемой.