Duvida com valores de select para uma table [RESOLVIDO]

10 respostas
S

Olá pessoal, estou aqui novamente com um problema no projeto que estou utilizando para estudo de jsp

não sei o que esta acontecendo, que não consigo retornar os valores de 1 select para uma table na pagina jsp, o estranho é que eu apenas copiei e colei isso de uma pagina jsp que esta funcionando apenas trocando os nomes

segue abaixo os codigos da minha classe DAO e do meu JSP, caso seja necessario mais partes do codigo so pedir que eu posto aqui, desde ja agradeço a paciencia e boa vontade dos membros deste forum, que tem me ajudado muito nos meus estudos.

pagina jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Matriculas/Listagem</title>
</head>
<body>
  <c:import url="header.jsp" />
    	   	
    <jsp:useBean id="matriculadao" class="br.com.andrus.jdbc.dao.MatriculaDAO"/>
  	  	  	
 <!-- cria a lista -->

	<table width="100%">
		<c:forEach var="matricula" items="${matriculadao.lista}" varStatus="id">    
			<tr bgcolor="#${id.count % 2 == 0 ? 'FFFFFF' : 'FFE4B5'}" >
			  <td>${matricula.id}</td>
			  <td>${matricula.idaluno}</td>
			  <td>${matricula.idcurso}</td>
			</tr>
		</c:forEach>      
    </table>   
       
  <c:import url="../footer.jsp" />
</body>
</html>

minha classe DAO

package br.com.andrus.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.andrus.jdbc.ConnectionFactory;
import br.com.andrus.jdbc.model.Matricula;

public class MatriculaDAO {

	// a conexão com o banco de dados
	private Connection connection;
	
	public MatriculaDAO() {
		this.connection = new ConnectionFactory().getConnection();
	}
	
	public void adiciona(Matricula matricula) {
		String sql = "INSERT INTO matricula (id_aluno, id_curso) values (?, ?);";
	
		try {			
			// prepared statement para inserção
			PreparedStatement stmt = connection.prepareStatement(sql);
			
			// seta os valores
			stmt.setString(1,String.valueOf(matricula.getIdAluno()));
			stmt.setString(2,String.valueOf(matricula.getIdCurso()));
			
			
			// executa
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	
	public List<Matricula> getLista() {
		try {
			List<Matricula> matriculas = new ArrayList<Matricula>();
			PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM matricula;");
			ResultSet rs = stmt.executeQuery();
		
			while (rs.next()) {
				
				// criando o objeto Matricula
				Matricula matricula = new Matricula();
				long id = Long.parseLong(rs.getString("id"));
				matricula.setId(id);
				matricula.setIdAluno(Long.parseLong(rs.getString("contato")));
				matricula.setIdCurso(Long.parseLong(rs.getString("curso")));			
		
				
				// adicionando o objeto à lista
				matriculas.add(matricula);
			}
			rs.close();
			stmt.close();
			return matriculas;
		
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

}

10 Respostas

rogelgarcia

Já arrumou o negócio do ? heheheh… to zuando…

Tem dados na tabela de matricula?

Deu algum pau… ou simplismente nao montou a tabela?

S

Ja arrumei sim, ontem mesmo ja concertei isso, valeu a dica!

a tabela de matricula tem dados, pois o insert funciona,
o que acontece é que quando eu chamo o list.jsp ele da 1 erro e nem abre a pagina.

rogelgarcia

Posta o erro aí entao

S

Ele ta dando erro 500 quando eu chamo a pagina e no console aparece isso:

23/03/2010 13:15:16 org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet jsp threw exception

java.sql.SQLException: Column id not found.

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)

at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1136)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5531)

at br.com.andrus.jdbc.dao.MatriculaDAO.getLista(MatriculaDAO.java:53)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)

at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)

at org.apache.el.parser.AstValue.getValue(AstValue.java:118)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)

at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)

at org.apache.jsp.matricula.list_jsp._jspx_meth_c_005fforEach_005f0(list_jsp.java:153)

at org.apache.jsp.matricula.list_jsp._jspService(list_jsp.java:90)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:619)

uma coisa que eu fiz aqui e que não deu o erro foi tirar o foreach, e criar a tabela na mão mesmo com dados digitados

valeu pela ajuda!

rogelgarcia

É porque nao existe o campo id na tabela matricula

S

o campo id da tabela matricula foi renomeado agora, pois antes era id_matricula(eu nem tinha me ligado nisso), mas agora continua dando o mesmo erro, porem ele ta falando do campo idAluno

***23/03/2010 13:55:12 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.sql.SQLException: Column ‘idAluno’ not found.

a tabela matricula do banco tem os seguintes campos:
id (antigo id_matricula) autoincrement
id_aluno
id_curso

rogelgarcia

Cara na sua pergunta já tá a resposta:

ta falando do campo idAluno

(…)

a tabela matricula do banco tem os seguintes campos:
id (antigo id_matricula) autoincrement
id_aluno
id_curso

S

mas o que eu não consigo enchergar é: como ele ta dando o insert certinho na table, e na hora do select ele ta pedindo isso?

fica mais facil arrumar o nome do campo na table ou mudar o codigo no java?

obrigado pela paciencia

rogelgarcia

Porque no insert vc usou o nome que tá no banco id_aluno

S

alterei o nome das tabelas no banco mesmo e problema resolvido!!

muito obrigado pela paciencia!!

Criado 23 de março de 2010
Ultima resposta 23 de mar. de 2010
Respostas 10
Participantes 2