Este erro está me atormentando:
Exception in thread "main" java.lang.RuntimeException: org.postgresql.util.PSQLException: Não pode utilizar métodos de consulta que pegam uma consulta de um comando preparado. at br.com.prog2.jdbc.dao.JogoDao.getLista(JogoDao.java:76) at br.com.prog2.jdbc.teste.TestaListagem.main(TestaListagem.java:14) Caused by: org.postgresql.util.PSQLException: Não pode utilizar métodos de consulta que pegam uma consulta de um comando preparado. at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:363) at br.com.prog2.jdbc.dao.JogoDao.getLista(JogoDao.java:55) ... 1 more '''
JogoDao ''' package br.com.prog2.jdbc.dao;
import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Calendar; import java.util.List;
import br.com.prog2.jdbc.ConnectionFactory; import br.com.prog2.jdbc.modelo.Jogo;
public class JogoDao {
private Connection connection;
public JogoDao() { this.connection = new ConnectionFactory().getConnection(); }
public void adicionaContato(Jogo jogo) { String sql = "insert into jogos" + "(nome, preco, plataforma, faixaetaria, pontuacao, descricao, desenvolvedora)" + "values (?,?,?,?,?,?,?)"; try { PreparedStatement preparedSt = connection.prepareStatement(sql);
// setando valores preparedSt.setString(1, jogo.getNome()); preparedSt.setDouble(2, jogo.getPreco()); preparedSt.setString(3, jogo.getPlataforma()); preparedSt.setInt(4, jogo.getFaixaetaria()); preparedSt.setInt(5, jogo.getPontuacao()); preparedSt.setString(6, jogo.getDescricao()); preparedSt.setString(7, jogo.getDesenvolvedora());
// execucao dos blocos preparedSt.execute(); preparedSt.close();
} catch (SQLException e) { e.printStackTrace(); }
}
public List getLista(String busca) { String sql = "select * from jogos where name='"+busca+"'"; List listajogos = new ArrayList<>(); try { PreparedStatement preparedSt = connection.prepareStatement(sql); preparedSt.execute(sql);
ResultSet rs = preparedSt.getResultSet(); while (rs.next()) { long id = rs.getLong("id"); String nome = rs.getString("nome"); double preco = rs.getDouble("preco"); String plataforma = rs.getString("plataforma"); int faixaetaria = rs.getInt("faixaetaria"); int pontuacao = rs.getInt("pontuacao"); String descricao = rs.getString("descricao"); String desenvolvedora = rs.getString("desenvolvedora");
Jogo jogo = new Jogo(id, nome, preco, plataforma, faixaetaria, pontuacao, descricao, desenvolvedora); listajogos.add(jogo); } rs.close(); preparedSt.close(); return listajogos; } catch (SQLException e) { throw new RuntimeException(e); } }
public void atualiza() {
}
public void remove(Jogo jogo){ try { PreparedStatement preparedSt = connection.prepareStatement("delete from contatos where id=?"); preparedSt.setLong(1, jogo.getId()); preparedSt.execute(); preparedSt.close(); } catch (SQLException e){ throw new RuntimeException(e); } } }
main
package br.com.prog2.jdbc.teste;
import java.util.List;
import br.com.prog2.jdbc.dao.JogoDao; import br.com.prog2.jdbc.modelo.Jogo;
public class TestaListagem { public static void main(String[] args) { JogoDao dao = new JogoDao(); Jogo jogo = new Jogo(null, null, 0, null, 0, 0, null, null); dao.adicionaContato(jogo);
List lista = dao.getLista("Jose"); for (Jogo jogo2 : lista) { System.out.println("Nome: "+ jogo.getNome()); } } }
'''