Problema com SELECT

8 respostas
M

Não to conseguindo listar os dados de minha tabela. A conexão com o banco está ok,porem sempre apresenta o mesmo erro, alguem pode me ajudar ?
Segue abaixo o código e erro :

[color=blue]<%@include file=“conexao2.jsp”%>
<html>
<head>
<title>Aluno</title>
</head>
<body>
<%

String nome= request.getParameter("nome");
         String procura=" SELECT * FROM agenda WHERE nome='"+nome+"'";
         java.sql.ResultSet rs=stmt.executeQuery(procura);
         String user,fone,email;
         user=rs.getString("nome");
         fone=rs.getString("fone");
         email=rs.getString("mail");
     %&gt;
     &lt;table border="1"&gt;            
             &lt;tr&gt;
                 &lt;td&gt;Nome: &lt;/td&gt;
                 &lt;td&gt;&lt;%=user%&gt;&lt;/td&gt;
             &lt;/tr&gt;
             &lt;tr&gt;
                 &lt;td&gt;Telefone: &lt;/td&gt;
                 &lt;td&gt;&lt;%=fone%&gt;&lt;/td&gt;
             &lt;/tr&gt;
             &lt;tr&gt;
                 &lt;td&gt;E-mail: &lt;/td&gt;
                 &lt;td&gt;&lt;%=email%&gt;&lt;/td&gt;
             &lt;/tr&gt;
         &lt;/tbody&gt;
     &lt;/table&gt;         


&lt;/body&gt;

</html>
[/color]

O erro é este :avax.servlet.ServletException: [Microsoft][ODBC Driver Manager] Invalid cursor state

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

org.apache.jsp.consulta_jsp._jspService(consulta_jsp.java:138)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

8 Respostas

T

Não faltou um “rs.next()” não?

M

Carafuncionou brigadão…

Pedrosa

Sua pesquisa pode retornar mais de um nome então vc precisa de um while.

while (rs.next()) {
..monta sua tabela
}
mapeixoto

:roll:

M

Tá funcioando … só que só ta listando a penas uma linha do banco, vc sabe pq?

olha o cogigo

<%

String procura="SELECT * FROM agenda";
         java.sql.ResultSet rs=stmt.executeQuery(procura);  
         rs.next();
         String user="",fone="",email="";
         user+=rs.getString("nome");
         fone+=rs.getString("fone");
         email+=rs.getString("mail");
         rs.next();
%>

<center>











<table border=1>
&lt;tr&gt;
             &lt;td colspan="3"&gt; Listar alunos&lt;/td&gt;
             
         &lt;/tr&gt;
         &lt;tr bgcolor="green"&gt;
             &lt;td&gt;&lt;center&gt;Nome&lt;/center&gt;&lt;/td&gt;
             &lt;td&gt;&lt;center&gt;Telefone&lt;/center&gt;&lt;/td&gt;
             &lt;td&gt;&lt;center&gt;Email&lt;/center&gt;&lt;/td&gt;

Pedrosa

Coloque um while para percorrer todos os registros.

while(rs.next()){
..seu conteudo
}
labolpks

vc tem que colocar tudo dentro de um loop

ou seja:

<%

while(rs.next()) {

%>

<tr>

<td><%=rs.getString(seucampo)%></td>

</tr>

<%

}

%>
Pedrosa

Após tudo isso funcionar, vamos a algumas considerações:

1 - Nunca misture lógica de negócios na camada View (select * from tabela)

2 - Nunca use códigos java no jsp e vice - versa

3 - Atualmente existem taglibs que geram esses resultados de maneira muito bakana: http://displaytag.homeip.net/displaytag-examples-1.1/example-pse.jsp

4 - De uma pesquisada em MVC

5 - Um framework MVC pode te poupar muito trabalho:
http://www.vraptor.org/pt/first-example.html
http://click.sourceforge.net/

Bons testes!

Criado 24 de outubro de 2006
Ultima resposta 24 de out. de 2006
Respostas 8
Participantes 5