Tabela uaditoria

9 respostas
M
Estou fazendo trabalho de faculdade onde tenho  inserir atividade em uma tabela quando altero deleto ou adiciono uma estes dado irão para uma tabela auditoria  funciona certinho porem eu trazer os dados desta tabela auditoria para aplicação  tras somente os ultimo dado inserido ou deletado ou alterado gostaria que viesse todos os dados

public class DAOAuditoria {

public ArrayList listar() throws SQLException {

StringBuilder sql = new StringBuilder();

sql.append("SELECT tipooperacao, dataoperacao, chave, antes, depois ");

sql.append(FROM auditoria);
Connection conexao = (Connection) ConexaoFactory.conectar();

	PreparedStatement comando = (PreparedStatement) conexao.prepareStatement(sql.toString());
    System.out.println(comando);
	ResultSet resultado = comando.executeQuery();

	ArrayList<Auditoria> lista = new ArrayList<Auditoria>();
	Auditoria a = new Auditoria();
	while (resultado.next()) {
		
		 a.setTipopercao(resultado.getString("tipooperacao"));
		
	  a.setDataoperacao(resultado.getDate("dataoperacao"));
	    a.setUsuariochave(resultado.getInt("chave"));
	    a.setAntes(resultado.getString("antes"));
	    a.setDepois(resultado.getString("depois"));
       
		lista.add(a);
	
}

com.mysql.jdbc.JDBC42PreparedStatement@3ada9e37: SELECT tipooperacao, dataoperacao, chave, antes, depois FROM auditoria
[Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4], Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4], Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4], Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4], Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado

9 Respostas

darlan_machado

Tem certeza que está inserindo adequadamente?
Executou a mesma query diretamente no banco de dados?

M

sim inserção está certa porem quando faço a pelo eclipse via console so este resultado como postei

usuariocodigo tipooperacao dataoperacao chave antes depois


root@localhost INSERÇÃO 2018-07-24 11:33:22 1 (NULL) escrever2
root@localhost INSERÇÃO 2018-07-24 11:33:51 1 (NULL) escrever1
root@localhost INSERÇÃO 2018-07-24 11:34:22 1 (NULL) escrever3
root@localhost DELETAR 2018-07-24 11:35:31 1 escrever2 (NULL)
root@localhost INSERÇÃO 2018-07-24 13:46:57 1 (NULL) escrever4

este restutdo a mesma consuta via banco de dados

M

usuariocodigo tipooperacao dataoperacao chave antes depois


root@localhost INSERÇÃO 2018-07-24 11:33:22 1 (NULL) escrever2
root@localhost INSERÇÃO 2018-07-24 11:33:51 1 (NULL) escrever1
root@localhost INSERÇÃO 2018-07-24 11:34:22 1 (NULL) escrever3
root@localhost DELETAR 2018-07-24 11:35:31 1 escrever2 (NULL)
root@localhost INSERÇÃO 2018-07-24 13:46:57 1 (NULL) escrever4

darlan_machado

Chegou a conferir no banco de dados?

M

sim . Veja so tenho 5 registro no banco que são os que postei acima como esta no banco
quando chamo o método listar vem resultado com 5 registro porem em todos 5 mostram a mesma coisas

Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]
Resultado
Auditoria [tipopercao=INSERÇÃO, dataoperacao=2018-07-24, usuariochave=1, antes=null, depois=escrever4]

darlan_machado

Ah sim, só agora prestei atenção no que você fez.
Veja, você declara a variável a antes do while

e esse é o problema.
Cada vez que você itera, você diz que o valor representado por a, uma única posição de memória, representa o valor setado e adicionado à lista ao fim do loop.
Porém, como a posição de memória onde a se encontra é uma só, você sempre terá o último valor lido.
Assim sendo, coloque a declaração de a dentro do while

while (resultado.next()) {
    Auditoria a = new Auditoria();
   //resto do código igual

Entendeu?

M

Agora deu certinho , que xing ling que eu sou kkk.
Muito Obrigado.

M

Como que mudo o status para resolvido

darlan_machado

Cara, esse é um erro bem comum.
Só errando que se aprende.

Criado 24 de julho de 2018
Ultima resposta 24 de jul. de 2018
Respostas 9
Participantes 2