SQLite Exception没有这样的列“codigo”

时间:2013-12-20 22:10:20

标签: java android sqlite

很抱歉打扰你这个问题,但我不能自己想出来,如果你能帮助我,我将不胜感激。我正在尝试运行我的代码,但每次它抛出这个异常“没有这样的专栏:codigo”

这是我的代码,以及它发生的地方。

PolideportivoDAO.java

if (init){
                //CategoriaSocial categoria = null;
                List<CategoriaSocial> listaDeCategorias = new Vector<CategoriaSocial>();
                //Categoria Social
                if (CategoriaDAO.getInstance(context).obtenerTodosLasCategorias().size() == 0){
                    listaDeCategorias.add(CategoriaDAO.getInstance(context).crearCategoriaNueva("1", "Miembro A",
                            "Miembro con todos los privilegios, pase diario y uso de la piscina"));
                    listaDeCategorias.add(CategoriaDAO.getInstance(context).crearCategoriaNueva("2", "Miembro B", 
                            "Permiso para uso de las instalaciones tres veces a la semana"));
                    listaDeCategorias.add(CategoriaDAO.getInstance(context).crearCategoriaNueva("3", "Miembro C",
                            "Permiso para uso de las instalaciones solo fin de semana de 8 am a 16 pm"));
                }

CategoriaDAO.java

public List<CategoriaSocial> obtenerTodosLasCategorias() {

        List<CategoriaSocial> categorias = new Vector<CategoriaSocial>();

        Cursor cursor = db.query(ICategoriaSQLiteHelper.TABLA_CATEGORIA_SOCIAL, 
                ICategoriaSQLiteHelper.columnasCategoria, null, null, null, null, null);

        cursor.moveToFirst();
        while (!cursor.isAfterLast()){
            CategoriaSocial categoria = crearCategoriaDesdeCursor(cursor);
            categorias.add(categoria);
            cursor.moveToNext();
        }
        cursor.close();
        return categorias;
    } 

ICategoriaSQLiteHelper.java

package com.example.polideportivo1;

public class ICategoriaSQLiteHelper{


    public static final String TABLA_CATEGORIA_SOCIAL = "Categoria";

    public static final String COLUMNA_ID = "id";
    public static final String COLUMNA_CODIGO = "codigo";
    public static final String COLUMNA_CATEGORIA = "nombre";
    public static final String COLUMNA_DESCRIPCION = "descripcion";

    public static final String[] columnasCategoria = 
        { ICategoriaSQLiteHelper.COLUMNA_ID,
            ICategoriaSQLiteHelper.COLUMNA_CODIGO,
            ICategoriaSQLiteHelper.COLUMNA_CATEGORIA,
            ICategoriaSQLiteHelper.COLUMNA_DESCRIPCION,
            };

    public static String TABLA_CATEGORIA_SOCIAL_CREACION = "CREATE TABLE "
            + TABLA_CATEGORIA_SOCIAL + "(" + COLUMNA_ID + " INTEGER primary key autoincrement, " 
            + COLUMNA_CODIGO + " TEXT not null unique,"
            + COLUMNA_CATEGORIA + " TEXT not null,"
            + COLUMNA_DESCRIPCION + " TEXT"

                    + ");";

}

2 个答案:

答案 0 :(得分:1)

错误信息很清楚。

您正在尝试访问数据库中不存在的字段。

答案 1 :(得分:1)

您发布的代码示例不足以查看异常发生的位置,因此我认为它发生在此处:

Cursor cursor = db.query(ICategoriaSQLiteHelper.TABLA_CATEGORIA_SOCIAL ...

并且1)表存在2)它不包含名为"codigo"的列(ICategoriaSQLiteHelper.COLUMNA_CODIGO的值)。

您是不是试图将代码运行一段时间前创建的旧表Categoria,而当时不包含列codigo

如果是这样的话,删除旧表并创建一个新表 - 这次使用上面示例中的TABLA_CATEGORIA_SOCIAL_CREACION - 应该可以解决问题。