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); }