MySQL + JSP (Select no banco)?

6 respostas
A

Galera, preciso trazer uma informação do banco para a página JSP.

Estou produzindo um site que terá algumas notícias, e na inicial quero mostrar apenas uma… Quero que ele busque a última cadastrada no banco. Já fiz a conexão, só preciso colocar essa informação no JSP.

Dizem que é bom fazer com lista, mas para uma única mensagem não é necessário, correto? Se eu trouxer 3 notícias, devo usar lista? Como faço nessas duas ocasiões?

Muito obrigado!

6 Respostas

T

Como está seu código de conexão com o banco de dados? Você está usando Servlets puro ou algum framework?
Se você precisa trazer só o último registro, não há necessidade de utilizar uma lista. Poste seu código, assim fica melhor pra galera te ajudar.

L

Alan,

se for a última, use:

SELECT noticia FROM TABELA where id = (SELECT MAX(ID) from TABELA)

Simples não ?

A

Fiz em Servlet puro, mas segui alguns exemplos da apostila Fj21 Caelum, cheguei a usar hibernate também. Mas nesse está em Servlet puro.

Não tenho o código aqui, estou desenvolvendo isso em casa, mas escrevi agora pois é o horário que a galera pode responder…

Que na apostila da caelum o select é feito trazendo a lista, posso olhar na apostila e postar o código que usei como referência.

Valeu!

T

Você pode usar a query que o @leorbarbosa comentou, no seu DAO:

public Noticia consultaUltimaNoticia() {
        try {
                PreparedStatement stmt = this.connection.prepareStatement("SELECT noticia FROM TABELA where id = (SELECT MAX(ID) from TABELA)");
                ResultSet rs = stmt.executeQuery();
                
                if(rs.next()) {

                        Noticia noticia = new Noticia();
                        noticia.setId(rs.getInt("id"));
                        noticia.setNome(rs.getString("nome"));
                        noticia.setAssunto(rs.getString("assunto"));
                                
                        rs.close();
                        stmt.close();
                        return noticia;
                }
                return null;
        } catch (Exception e) {
                throw new RuntimeException(e);
        }
}

Seu Servlet pode ficar parecido com isto:

public class NoticiaServlet extends HttpServlet {

        protected void service(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                
                NoticiaDAO dao = new NoticiaDAO();
                Noticia noticia = dao.consultaUltimaNoticia();
                
                request.setAttribute("noticia", noticia);
                
                RequestDispatcher rd = request.getRequestDispatcher("/noticia/visualiza.jsp");
                rd.forward(request, response);
        }
}

E no seu jsp você consegue pegar os dados da notícia:

Id: ${noticia.id}<br />
Nome: ${noticia.nome}<br />
Assunto: ${noticia.assunto}<br />
A

Escrevi mas a mensagem do usuário acima chegou antes, como não tinha visto desconsiderar essa então, já respondeu minhas dúvidas que escrevi aqui!

A conexão fiz basicamente assim:

1 public Connection getConnection() { 2 System.out.println("Conectando ao banco"); 3 try { 4 return DriverManager.getConnection("jdbc:mysql://localhost/alanmartins", "root", ""); 5 } catch(SQLException e) { 6 throw new RuntimeException(e); 7 } 8 }

No meu DAO eu crio o método que insere, quero o método que dá o select ( Como seria esse select? Igual informado no post acima? SELECT noticia FROM TABELA where id = (SELECT MAX(ID) from TABELA) e então armanezaria isso em uma variável?

noticias = ("SELECT noticia FROM TABELA where id = (SELECT MAX(ID) from TABELA)";

Mais ou menos isso ai?

Há alguma maneira melhor de se fazer tudo isso, algum padrão?

A

Muito obrigado a todos! Era isso mesmo que eu precisava.

Criado 11 de agosto de 2010
Ultima resposta 11 de ago. de 2010
Respostas 6
Participantes 3