致:java.lang.IllegalArgumentException:如果列'_id'不存在 [英] Caused by: java.lang.IllegalArgumentException: column '_id' does not exist

查看:296
本文介绍了致:java.lang.IllegalArgumentException:如果列'_id'不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用光标和列表视图,以显示我的表。但我得到的错误。

 致:java.lang.IllegalArgumentException:如果列'_id'不存在
 

但我没有在我的应用程序申报_id。 有人可以帮我吗?

这是我的code在dbHelper。

 公开光标DataPesanKeluar(){
    光标C = dba.rawQuery(
             选择 
            + kel_id +,
            + e_chiperteks +,
            + k_nama +,
            + kel_waktu +
            FROM+ tbPesan +INNER JOIN+ tbPesanKeluar +
            开+ tbPesan +。 + p_idpesan +=+ tbPesanKeluar +。 + kel_idpesan +
            INNER JOIN+ tbEnkrip +
            开+ tbPesan +。 + p_idenkrip +=+ tbEnkrip +。 + e_idenkrip +
            INNER JOIN+ tbKontak +
            开+ tbPesan +。 + p_idkontak +=+ tbKontak +。 + k_id,NULL);
    返回℃;
}
 

这是我的类来显示数据。

  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};
    光标= data.DataPesanKeluar();
    SimpleCursorAdapter keluarAdapter =新SimpleCursorAdapter(这一点,R.layout.baris_keluar,光标,keluar,K); //这是我的错误
    listKeluar.setAdapter(keluarAdapter);
    listKeluar.setOnItemClickListener(新OnItemClickListener(){

        @覆盖
        公共无效onItemClick(适配器视图为arg0,查看ARG1,INT ARG2,长ARG3){
            光标listCursor =(光标)arg0.getItemAtPosition(ARG2);
            串idkeluar = listCursor.getString(listCursor.getColumnIndex(data.kel_id));
            字符串NAMA = listCursor.getString(listCursor.getColumnIndex(data.k_nama));
            串chiperteks = listCursor.getString(listCursor.getColumnIndex(data.m_chiperteks));
            串waktu = ​​listCursor.getString(listCursor.getColumnIndex(data.kel_waktu));
 

解决方案

光标必须包括一个名为_id列或这个类将无法工作。

您可以使用现有的ID也许尝试伪造它:

 光标C = dba.rawQuery(
         选择 
        + kel_id +AS _id
        + kel_id +,
        + e_chiperteks +,
        + k_nama +,
        + kel_waktu +
        FROM+ tbPesan +INNER JOIN+ tbPesanKeluar +
        开+ tbPesan +。 + p_idpesan +=+ tbPesanKeluar +。 + kel_idpesan +
        INNER JOIN+ tbEnkrip +
        开+ tbPesan +。 + p_idenkrip +=+ tbEnkrip +。 + e_idenkrip +
        INNER JOIN+ tbKontak +
        开+ tbPesan +。 + p_idkontak +=+ tbKontak +。 + k_id,NULL);
 

i want to show my table using cursor and list view. but i got error.

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

but i didn't declare _id in my application. can somebody help me?

this is my code in 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;
}

and this is my class to display data.

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));

解决方案

The Cursor must include a column named _id or this class will not work.

You can maybe try to fake it using your existing 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);

这篇关于致:java.lang.IllegalArgumentException:如果列'_id'不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆