Skip to content
Advertisement

i cant update value in SQLite

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?

Advertisement

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);
}
4 People found this is helpful
Advertisement