Erro TOSCO em JSP

10 respostas
F

Onde estou errando?
Pessoal, estou fazendo isso para ler um dado de um ResultSet

<%=(((rsTarefas_data = rsTarefas.getObject(“codusuario”))==null || rsTarefas.wasNull())?"":rsTarefas_data)%

Funciona. Mas se eu quiser usar o mesmo dado outra vez (ou seja, repetir o código), dá erro.

javax.servlet.ServletException: No data found

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

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

org.apache.jsp.schedule.tarefas_jsp._jspService(org.apache.jsp.schedule.tarefas_jsp:237)

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)

java.sql.SQLException: No data found

sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)

sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Unknown Source)

sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Unknown Source)

sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)

sun.jdbc.odbc.JdbcOdbcResultSet.getObject(Unknown Source)

sun.jdbc.odbc.JdbcOdbcResultSet.getObject(Unknown Source)

org.apache.jsp.schedule.tarefas_jsp._jspService(org.apache.jsp.schedule.tarefas_jsp:188)

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)

10 Respostas

Mauricio_Linhares

Provavelmente é o driver ODBC que está fazendo merda. Você está usando um banco de dados de verdade ou são tabelas do Acess?

F

Access. É um trabalho acadêmico. Estou conectando via ODBC. Alguma sugestão, amigo? Me salva dessa. Estou até com vergonha!

Mauricio_Linhares

Não tem milagre não, ou você “guarda” as informações da tabela em outros objetos, ou então não tenta pegar denovo, porque o problema é do driver.

Na boa, use um banco de dados relacional:

http://www.postgresql.org/

betonit

jdbc na veia! depois q larguei o ASP nunca + quiz saber de ODBC!

mysql tb é um bom bd.

O

Olá,

Se realmente quer fazer esta loucura, veja se o código abaixo pode te ajudar :smiley:

<%@ page language="java" %>
<%@ page import="java.sql.*"%>
<% 

  String dsn     = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/dados/clientes.mdb";
  String usuario = "";
  String senha   = "";
  String sql     = "";

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
  Connection con = DriverManager.getConnection(dsn,usuario,senha);
  Statement st = con.createStatement();

  //==========================================================================
  // Se não existir um codigo na linha de parametros do browser, monta o 
  // Recordset com todos os registros
  //==========================================================================
  if(request.getParameter("codigo")==null) {

	// Se o usuario não preencheu o nome no form, pega todos os registros
	if(request.getParameter("nome")=="") {
      sql = "SELECT * FROM CLIENTES ORDER BY NOME";
	} else {
      sql  = "SELECT * FROM CLIENTES WHERE NOME LIKE '%" + request.getParameter("nome") + "%' ORDER BY NOME";
	}

    ResultSet rs = st.executeQuery(sql);
    out.println("<TABLE BORDER=1>");
    if(rs != null) {
       while (rs.next()){
         int codigo    = rs.getInt("CODIGO");
         String nome   = rs.getString("NOME");
   	     out.println("<TR>");
	     out.println("<TD><A HREF='demo.jsp?codigo=" + codigo + "'>"+nome+"</A></TD>");
  	     out.println("</TR>");
       }
    }
    out.println("</TABLE>");
  }

  //==========================================================================
  // Pesquisa o registro conforme o código especificado na linha de parametro
  //==========================================================================
  if(request.getParameter("codigo")!="") {
    ResultSet rs = st.executeQuery("SELECT * FROM CLIENTES WHERE CODIGO="+ request.getParameter("codigo"));
    out.println("<TABLE BORDER=1>");
    while (rs.next()){
  	  out.println("<TR><TD>Código</TD><TD>"   + rs.getInt("CODIGO")     + "</TD></TR>");
  	  out.println("<TR><TD>Nome</TD><TD>"     + rs.getString("NOME")    + "</TD></TR>");
  	  out.println("<TR><TD>Endereço</TD><TD>" + rs.getString("ENDERECO")+ "</TD></TR>");
  	  out.println("<TR><TD>Bairro</TD><TD>"   + rs.getString("BAIRRO")  + "</TD></TR>");
  	  out.println("<TR><TD>Cidade</TD><TD>"   + rs.getString("CIDADE")  + "</TD></TR>");
  	  out.println("<TR><TD>Estado</TD><TD>"   + rs.getString("ESTADO")  + "</TD></TR>");
  	  out.println("<TR><TD>Sexo</TD><TD>"     + rs.getString("SEXO")    + "</TD></TR>");
    }
    out.println("</TABLE>");
	out.println("<BR><A HREF='javascript:history.back();'>Voltar</A>");
  }
  st.close();
  con.close();
%>
Mauricio_Linhares

Só uma coisinha oandrade, em Java é ResultSet, RecordSet é coisa de ADO :mrgreen:

F

Obrigado pessoal. Os problemas foram resolvidos com a reinstalação do TomCat. Alguma coisa desarrumou a casa. O trabalho está pronto e ficou muito bom. Valeu aí!

(usei access, claro, ia criar tabela no meu SqlServer pra fazer trab acadêmico?!!!)

O

obrigado pela informação… haha :smiley:

[]s

Mauricio_Linhares

felipedr:
Obrigado pessoal. Os problemas foram resolvidos com a reinstalação do TomCat. Alguma coisa desarrumou a casa. O trabalho está pronto e ficou muito bom. Valeu aí!

(usei access, claro, ia criar tabela no meu SqlServer pra fazer trab acadêmico?!!!)

Bem, no SqlServer eu não criaria nem pro meu pior inimigo :lol:

Mas deixando a brincadeira de lado, mesmo sendo um trabalho universitário, você tem que levar a sério sim, porque agora é a sua chance de aprender, amanhã, quando você chegar no mercado de trabalho, não vão querer que você vá fazer “planilha” no Access, vão querer você acessando um banco de dados de verdade.

Se você aprender a fazer as coisas bem feitas agora, quando precisar fazer elas “de verdade” amanhã, não vai ter problemas.

O

5 estrelas mauricio! :smiley:

Criado 21 de junho de 2005
Ultima resposta 23 de jun. de 2005
Respostas 10
Participantes 4