Вызывается: java.lang.IllegalArgumentException: column ‘_id’ не существует

Вопрос:Я хочу показать свою таблицу, используя курсор и список. но я получил ошибку. Caused by: java.lang.IllegalArgumentException: column '_id' does not exist но я не объявлял _id в своем приложении. может кто-нибудь мне помочь? это мой код в dbHelper. public Cursor DataPesanKeluar() { Cursor c = dba.rawQuery( " SELECT " + kel_id + "," + e_chiperteks

Вопрос:

Я хочу показать свою таблицу, используя курсор и список. но я получил ошибку.

Caused by: java.lang.IllegalArgumentException: column ‘_id’ does not exist

но я не объявлял _id в своем приложении.
может кто-нибудь мне помочь?

это мой код в dbHelper.

public Cursor DataPesanKeluar() { Cursor c = dba.rawQuery( » SELECT » + kel_id + «,» + e_chiperteks + «,» + k_nama + «,» + kel_waktu + » FROM » + tbPesan + » INNER JOIN » + tbPesanKeluar + » ON » + tbPesan + «.» + p_idpesan + «=» + tbPesanKeluar + «.» + kel_idpesan + » INNER JOIN » + tbEnkrip + » ON » + tbPesan + «.» + p_idenkrip + «=» + tbEnkrip + «.» + e_idenkrip + » INNER JOIN » + tbKontak + » ON » + tbPesan + «.» + p_idkontak + «=» + tbKontak + «.» + k_id , null); return c; }

и это мой класс для отображения данных.

listKeluar = (ListView)findViewById(R.id.listKeluar); String [] keluar = { data.k_nama, data.m_chiperteks, data.kel_waktu }; int[] k = { R.id.tNama, R.id.tChiper, R.id.tWaktu }; cursor = data.DataPesanKeluar(); SimpleCursorAdapter keluarAdapter = new SimpleCursorAdapter( this, R.layout.baris_keluar, cursor, keluar, k ); //this is my error listKeluar.setAdapter(keluarAdapter); listKeluar.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Cursor listCursor = (Cursor) arg0.getItemAtPosition(arg2); String idkeluar = listCursor.getString(listCursor.getColumnIndex(data.kel_id)); String nama = listCursor.getString(listCursor.getColumnIndex(data.k_nama)); String chiperteks = listCursor.getString(listCursor.getColumnIndex(data.m_chiperteks)); String waktu = listCursor.getString(listCursor.getColumnIndex(data.kel_waktu)); Лучший ответ:

Курсор должен содержать столбец с именем _id или этот класс не будет работать.

Возможно, вы попытаетесь подделать его, используя свой существующий ID:

Cursor c = dba.rawQuery( » SELECT » + kel_id + » AS _id,» + kel_id + «,» + e_chiperteks + «,» + k_nama + «,» + kel_waktu + » FROM » + tbPesan + » INNER JOIN » + tbPesanKeluar + » ON » + tbPesan + «.» + p_idpesan + «=» + tbPesanKeluar + «.» + kel_idpesan + » INNER JOIN » + tbEnkrip + » ON » + tbPesan + «.» + p_idenkrip + «=» + tbEnkrip + «.» + e_idenkrip + » INNER JOIN » + tbKontak + » ON » + tbPesan + «.» + p_idkontak + «=» + tbKontak + «.» + k_id , null); Ответ №1

Сделать key_id как “_id”

public Cursor DataPesanKeluar() { Cursor c = dba.rawQuery( » SELECT » + kel_id + » AS _id» + «,» + e_chiperteks + «,» + k_nama + «,» + kel_waktu + » FROM » + tbPesan + » INNER JOIN » + tbPesanKeluar + » ON » + tbPesan + «.» + p_idpesan + «=» + tbPesanKeluar + «.» + kel_idpesan + » INNER JOIN » + tbEnkrip + » ON » + tbPesan + «.» + p_idenkrip + «=» + tbEnkrip + «.» + e_idenkrip + » INNER JOIN » + tbKontak + » ON » + tbPesan + «.» + p_idkontak + «=» + tbKontak + «.» + k_id , null); return c;

}

Ответ №2

Просто удалите kel_id + “,” из вашего оператора select, потому что таблица, из которой вы пытаетесь получить данные, не содержит столбца “_id”.

Ответ №3

Добавьте _id INTEGER PRIMARY KEY AUTOINCREMENT в инструкцию create table. Android иногда требует поля _id

Оцените статью
Добавить комментарий