i cant update value in SQLite

Tags: , , ,



I have this table to sqlite:

public static final String TABLA_PARA_SEGUIR =
        "CREATE TABLE " + TABLA_SEGUIR + "(" +
                ID_ELEMENTO + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                NOMBRE_MANGA + " TEXT NOT NULL, " +
                URL_MANGA + " TEXT NOT NULL, " +
                URL_IMAGEN + " TEXT NOT NULL, " +
                CONTADOR_CAPITULOS + " TEXT NOT NULL, " +
                BIT_SEGUIR_NO + " INTEGER);";

And this is my method to Update value:

private ContentValues mapaSiguiendo(SeguirManga sm){
    ContentValues cv = new ContentValues();
    cv.put(PaginasTabla.NOMBRE_MANGA, sm.getNombre());
    cv.put(PaginasTabla.URL_MANGA, sm.getUrl());
    cv.put(PaginasTabla.URL_IMAGEN, sm.getUrlImagen());
    cv.put(PaginasTabla.CONTADOR_CAPITULOS, sm.getContador());
    cv.put(PaginasTabla.BIT_SEGUIR_NO, sm.getValorSeguir());
    return cv;
}
public void actualizar(SeguirManga sm, Context actividad) {
    try{
        this.openWriteableDB();
        ContentValues cv = new ContentValues();
        cv.put(PaginasTabla.BIT_SEGUIR_NO, sm.getValorSeguir());
        db.update(PaginasTabla.TABLA_SEGUIR, cv, PaginasTabla.ID_ELEMENTO + " = ?", new String[]{String.valueOf(sm.getId())});
        db.close();
        Toast.makeText(actividad, "Modificado", Toast.LENGTH_SHORT).show();
    }catch(Exception sqlException){
        Toast.makeText(actividad, "Error: " + sqlException.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

And i add a object variable in my activity:

private SeguirManga seguirManga = new SeguirManga();

So, in activity I use this to change value using update method:

private void dejarMetodoDaato(){
    PaginasSQL paginasSQL = new PaginasSQL(TMOnlineMangaSeleccion.this);
    seguirManga.setValorSeguir(0);
    paginasSQL.actualizar(seguirManga);
}

But this not works because when I press the button:

dejarDato.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        dejarMetodoDaato();
    }
});

Class:

public class SeguirManga {
    private int id;
    private String nombre;
    private String url;
    private String urlImagen;
    private String contador;
    private int valorSeguir;

    public int getId() {
        return id;
    }

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

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getContador() {
        return contador;
    }

    public void setContador(String contador) {
        this.contador = contador;
    }

    public int getValorSeguir() {
        return valorSeguir;
    }

    public void setValorSeguir(int valorSeguir) {
        this.valorSeguir = valorSeguir;
    }

    public String getUrlImagen() {
        return urlImagen;
    }

    public void setUrlImagen(String urlImagen) {
        this.urlImagen = urlImagen;
    }

    public SeguirManga(){}

    public SeguirManga(int id, String nombre, String url, String urlImagen,String contador, int valorSeguir) {
        this.id = id;
        this.nombre = nombre;
        this.url = url;
        this.urlImagen = urlImagen;
        this.contador = contador;
        this.valorSeguir = valorSeguir;
    }
}

Nothing happens because the value is (1) one all the time. What’s wrong with my code?

Answer

You must specify the id of the row that you want to update:

private void dejarMetodoDaato(){
    PaginasSQL paginasSQL = new PaginasSQL(TMOnlineMangaSeleccion.this);
    seguirManga.setId(5); // change 5 to the value of the id of the row 
    seguirManga.setValorSeguir(0);
    paginasSQL.actualizar(seguirManga);
}


Source: stackoverflow