表[table]在SQLite Android中没有列[column]

时间:2016-01-16 13:11:01

标签: android sqlite

我试图在Android中的SQLite中从表中插入和恢复数据。但是,我收到了这个错误:

android.database.sqlite.SQLiteException: table produto has no column named cor (code 1): , while compiling: INSERT INTO produto(cor,tamanho,idproduto,material,descricao,valor,classificacao) VALUES (?,?,?,?,?,?,?)

这是我的" Produto" basecolumn:

public static abstract class ProdutosDAO implements BaseColumns {
    public final static String TABLE_NAME = "produto";
    public final static String COLUMN_NAME_ID_PRODUTO = "idproduto";
    public final static String COLUMN_NAME_DESCRICAO = "descricao";
    public final static String COLUMN_NAME_VALOR = "valor";
    public final static String COLUMN_NAME_CLASSIFICACAO = "classificacao";
    public final static String COLUMN_NAME_MATERIAL = "material";
    public final static String COLUMN_NAME_TAMANHO = "tamanho";
    public final static String COLUMN_NAME_COR = "cor";


    public final static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "+ ProdutosDAO.TABLE_NAME + " (" +
            ProdutosDAO._ID + PRIMARY_KEY +
            ProdutosDAO.COLUMN_NAME_ID_PRODUTO + INTEGER_TYPE + UNIQUE_INDEX + COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_DESCRICAO + VARCHAR_TYPE + "150)"+ COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_VALOR + DOUBLE_TYPE + COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_CLASSIFICACAO + INTEGER_TYPE  + COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_MATERIAL + INTEGER_TYPE +  COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_TAMANHO + INTEGER_TYPE  + COMMA_SEP +
            ProdutosDAO.COLUMN_NAME_COR + INTEGER_TYPE + ");";

    public final static String DROP_TABLE = "DROP TABLE IF EXISTS " + ProdutosDAO.TABLE_NAME;

    public final static String[] ALL_COLUMNS = {ProdutosDAO._ID,
        COLUMN_NAME_ID_PRODUTO,
        COLUMN_NAME_DESCRICAO,
        COLUMN_NAME_VALOR,
        COLUMN_NAME_CLASSIFICACAO,
        COLUMN_NAME_MATERIAL,
        COLUMN_NAME_TAMANHO,
        COLUMN_NAME_COR
    };

}

我也有类型的静态变量:

// Types definition
public final static String VARCHAR_TYPE = " VARCHAR(";
public final static String INTEGER_TYPE = " INTEGER";
public final static String DOUBLE_TYPE = " DOUBLE";

要创建此表,我只使用:

db.execSQL(SisLojaBanco.ProdutosDAO.CREATE_TABLE);

好吧,我完全迷失了,并且不知道发生了什么。

有人能帮助我吗?

非常感谢,

的Mathias

我试图以这种方式插入值:

ContentValues values = new ContentValues();

    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_ID_PRODUTO, "1");
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_DESCRICAO, "'Barbel Titanio 2mm Preto Com Brilho'");
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_VALOR, 50.0);
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_CLASSIFICACAO, "4"); // Barbel
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_MATERIAL, "1"); // Titanio
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_TAMANHO, "1"); // 2mm
    values.put(SisLojaBanco.ProdutosDAO.COLUMN_NAME_COR, "3"); // Preto
    save(values);

0 个答案:

没有答案