Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Editar aluno no andaoid Studio. db.update("Alunos",dados, "id = ?", params ) não funciona.

Na aula 5, vídeo 5.4, o atualiza aluno não está funcionando. Exatamente esta linha

"db.update("Alunos",dados, "id = ?", params );"

Método:

"public void altera(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); ContentValues dados = pegaDadosDoAluno(aluno);

String[] params = {aluno.getId().toString()};

db.update("Alunos",dados, "id = ?", params ); Log.i("ALUNO_DAO", "AlteraAluno: " + aluno.getItem() + " -id: " + aluno.getId() + " -params " +params[0]); }"

O meu log.i mostra que ele identifica os parâmetros corretamente. Mas ele não salva os alunos modificados.

Aluno DAO Completo:

"package com.disprosio.capitao.compras2.dao;

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.support.annotation.NonNull; import android.util.Log;

import com.disprosio.capitao.compras2.modelo.Aluno;

import java.util.ArrayList; import java.util.List;

/* Created by Gilson on 05/02/2016. */ public class AlunoDao extends SQLiteOpenHelper{

public AlunoDao(Context context) { super(context, "Agenda", null, 4); }

@Override public void onCreate(SQLiteDatabase db) { //criando uma tabela String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, " + " item TEXT NOT NULL, " + " quantidadeComprada REAL NOT NULL," + " quantidadeDesejada REAL NOT NULL," + " precoAlvoUnitario REAL NOT NULL," + " precoCompradoUnitario REAL NOT NULL," + " custodoItem REAL NOT NULL," + " unidade TEXT NOT NULL, " + " observacoes TEXT, " + " b_togglebutton INT);"; db.execSQL(sql);

}

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

String sql = "DROP TABLE IF EXISTS Alunos"; db.execSQL(sql); onCreate(db);

Log.i("ALUNO_DAO", "Rodou onupgrade"); }

@NonNull private ContentValues pegaDadosDoAluno(Aluno aluno) { ContentValues dados = new ContentValues(); dados.put("item",aluno.getItem()); dados.put("quantidadeComprada",aluno.getQuantidadeComprada()); dados.put("quantidadeDesejada", aluno.getQuantidadeDesejada()); dados.put("precoAlvoUnitario",aluno.getPrecoAlvoUnitario()); dados.put("precoCompradoUnitario",aluno.getValorComprado()); dados.put("custodoItem",aluno.getCustodoItem()); dados.put("unidade", aluno.getUnidade()); dados.put("observacoes", aluno.getObservacoes()); dados.put("b_togglebutton", aluno.getB_togglebutton()); dados.put("id",aluno.getId()); return dados; }

public List buscaAlunos() { String sql = "SELECT * FROM Alunos;"; SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery(sql, null); // esta forma executa o sql e retorna um valor

List alunos = new ArrayList() ;

//c.moveToNext() além de mover, retorna boolean que diz se a linha é vazia ou não false = null line true tem conteudo while (c.moveToNext()){ Aluno aluno = new Aluno(); aluno.setId(c.getLong(c.getColumnIndex("id"))); aluno.setItem(c.getString(c.getColumnIndex("item"))); aluno.setQuantidadeComprada(c.getDouble(c.getColumnIndex("quantidadeComprada"))); aluno.setQuantidadeDesejada(c.getDouble(c.getColumnIndex("quantidadeDesejada"))); aluno.setPrecoAlvoUnitario(c.getDouble(c.getColumnIndex("precoAlvoUnitario"))); aluno.setValorComprado(c.getDouble(c.getColumnIndex("precoCompradoUnitario"))); aluno.setCustodoItem(c.getDouble(c.getColumnIndex("custodoItem"))); aluno.setUnidade(c.getString(c.getColumnIndex("unidade"))); aluno.setObservacoes(c.getString(c.getColumnIndex("observacoes"))); aluno.setB_togglebutton(c.getInt(c.getColumnIndex("b_togglebutton"))); alunos.add(aluno); }

c.close(); return alunos; }

public void insereAluno(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); ContentValues dados = pegaDadosDoAluno(aluno); db.insert("Alunos", null, dados); Log.i("ALUNO_DAO","InsereAluno"); }

public void delete(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); String[] params = {String.valueOf(aluno.getId())}; db.delete("Alunos", "id = ?", params); Log.i("ALUNO_DAO", "DeleteAluno"); }

public void altera(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); ContentValues dados = pegaDadosDoAluno(aluno);

String[] params = {aluno.getId().toString()};

db.update("Alunos",dados, "id = ?", params ); Log.i("ALUNO_DAO", "AlteraAluno: " + aluno.getItem() + " -id: " + aluno.getId() + " -params " +params[0]); } } "

1 resposta
solução!

Consegui resolver

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software