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