Incompatibility of blob types and byte sqlite

1

I am making an application to save the image in sqlite. However it is accusing the following error in my class dao: incompatible types byte cannnot be converted to byte.

My Classes:

import java.io.Serializable;

public class Produto  implements Serializable{ 
private int id; 
private String descricao; 
private double precoDeCusto; 
private double percDeLucro; 
private double precoDeVenda;
private String disponibilidade; 
private byte imagem; 

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

public double getPrecoDeCusto() {
    return precoDeCusto;
}

public void setPrecoDeCusto(double precoDeCusto) {
    this.precoDeCusto = precoDeCusto;
}

public double getPercDeLucro() {
    return percDeLucro;
}

public void setPercDeLucro(double percDeLucro) {
    this.percDeLucro = percDeLucro;
}

public double getPrecoDeVenda() {
    return precoDeVenda;
}

public void setPrecoDeVenda(double precoDeVenda) {
    this.precoDeVenda = precoDeVenda;
}

public String getDisponibilidade() {
    return disponibilidade;
}

public void setDisponibilidade(String disponibilidade) {
    this.disponibilidade = disponibilidade;
}

public byte getImagem() {
    return imagem;
}

public void setImagem(byte imagem) {
    this.imagem = imagem;
}

} 

My dao Class

 public class ProdutoDao {

public void inserirProduto(Produto produto) {
    System.out.println("Inserindo produto...");
    ContentValues v = new ContentValues();
    v.put("descricao", produto.getDescricao());
    v.put("precoDeCusto", produto.getPrecoDeCusto());
    v.put("percDeLucro", produto.getPercDeLucro());
    v.put("precoDeVenda", produto.getPrecoDeVenda());
    v.put("imagem", produto.getImagem());
    Login.db.insert("produtos", null, v);
    //ProjetoBd.db.close();
    System.out.println("Inseriu...");
}

public static void alterar(Produto produto) {
    ContentValues cv = new ContentValues();
    cv.put("descricao", produto.getDescricao());
    cv.put("precoDeCusto", produto.getPrecoDeCusto());
    cv.put("percDeLucro", produto.getPercDeLucro());
    cv.put("precoDeVenda", produto.getPrecoDeVenda());
    cv.put("imagem", produto.getImagem());
    String idTransformado = String.valueOf(produto.getId());
    String[] valoresDasVariaveisWhere = new String[1];
    valoresDasVariaveisWhere[0] = idTransformado;
    Login.db.update(
            "produtos", cv, "id = ?", valoresDasVariaveisWhere);
    System.out.println("Alterou...");
}

public ArrayList<Produto> getListagem(String parametro) {
    System.out.println("Listando produto...");
    String sql = "SELECT * FROM Produtos ORDER BY descricao ASC " + parametro;
    ArrayList<Produto> listagem = new ArrayList<Produto>();
    try {
        Cursor c = Login.db.rawQuery(sql, null);
        while (c.moveToNext()) {
            Produto prod = new Produto();
            prod.setId(c.getInt(0));
            prod.setDescricao(c.getString(1));
            prod.setPrecoDeCusto(c.getDouble(2));
            prod.setPercDeLucro(c.getDouble(3));
            prod.setPrecoDeVenda(c.getDouble(4));
            prod.setImagem(c.getBlob(5));
            //System.out.println("Descricao=" + prod.getDescricao());
            listagem.add(prod);
        }
    } catch (Exception e) {
        System.out.println("Erro");
        e.printStackTrace();
    }
    System.out.println("Listou..." + listagem.size());
    return listagem;
}

public void excluir(Produto produto) {
    System.out.println("Excluindo produto...");
    Login.db.delete("produtos", "id = ?", new String[]{String.valueOf(produto.getId())});
    System.out.println("Excluiu...");
}
}

The error occurs in this line ** prod.setImagem (c.getBlob (5));

My bank structure:

 public class EstruturaBanco {

public static void criarTabelas() {
    System.out.println("Criando as tabelas...");
    StringBuilder sb = new StringBuilder();

    sb.append(" CREATE TABLE IF NOT EXISTS [produtos] (");
    sb.append(" [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,");
    sb.append(" [descricao] VARCHAR2(50) NOT NULL,");
    sb.append(" [precoDeCusto] DOUBLE NOT NULL,");
    sb.append(" [percDeLucro] DOUBLE NOT NULL,");
    sb.append(" [precoDeVenda] DOUBLE NOT NULL,");
    sb.append(" [imagem] BLOB);");
    Login.db.execSQL(sb.toString()); 


    System.out.println("Tabelas criadas...");
}
}
    
asked by anonymous 11.01.2016 / 21:47

1 answer

6

You are trying to put a array in a byte variable

c.getBlob(5) (1) returns an array of bytes .

Change your Product class so that methods that return or receive byte return or receive byte[]

public class Produto  implements Serializable{ 
    ....
    ....
    private byte[] imagem; 
    ....
    ....
    public byte[] getImagem() {
        return imagem;
    }

    public void setImagem(byte[] imagem) {
        this.imagem = imagem;
    }
}
  • / p>     
    11.01.2016 / 22:30