Igor FV 0 Denunciar post Postado Junho 17, 2006 Boa tarde comunidade, estou com um trabalho para fazer em JSP com MYSQL, mas está dando um erro em um arquivo aqui. É uma coisa muito simples amigos. Existem 4 arquivos (index.jsp, agenda.jsp, Pessoa.java, DAO.java). index.jsp -> É uma pagina simples com um form com 2 campos text e 3 bts de submit (Incluir, Listar Todos, Excluir). O que eu quero fazer é cadastrar, listar todos os registros e excluir e alterar no bd MYSQL os dados desse form, já instalei tudo referente ao desenvolvimento em java. index.jsp <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Agenda</h1> <form action="agenda.jsp" method="post"> Nome: <input name="nome"><br> Fone: <input name="fone"><p> <input type="submit" name="bt" value="Inserir"><p> <input type="submit" name="bt" value="Listar Todos"><p> <input type="submit" name="bt" value="Excluir"><p> <input type="submit" name="bt" value="Alterar"><p> </form> </body> </html> agenda.jsp <jsp:useBean id="objPessoa" class="agenda.Pessoa" /> <% //o listarTodos nao precisa dos dados do form String bt=request.getParameter("bt"); //botao clicado if(bt.equals("Listar Todos")) { objPessoa.listarTodosPessoa(); } else //outras acoes { //pega parametros String n=request.getParameter("nome"); String f=request.getParameter("fone"); //atributos do objeto objPessoa.setNome(n); objPessoa.setFone(Integer.parseInt(f)); if(bt.equals("Inserir")) //insere { objPessoa.inserePessoa(); } else if(bt.equals("Excluir")) //exclui { objPessoa.excluiPessoa(); } }//else outras acoes %> <%= objPessoa.getMsg() %> Pessoa.java package agenda; public class Pessoa { private int fone; private String nome; //dados e objeto para o banco de dados private String tb="pessoas", cps, vals, condicao; private DAO db = new DAO(); //para construcao da msg de resposta private String msg = new String(); //construtor deve ser vazio para ser usado pelo comando useBean public Pessoa() { } //metodos public void inserePessoa() { cps="(nome,fone)"; vals="('"+nome+"',"+fone+")"; db.insere(tb, cps, vals); } public void listarTodosPessoa() { db.listarTodos(tb); } public void excluiPessoa() { condicao= "nome ='"+nome+"'"; db.exclui(tb, condicao); } //getters & setters public int getFone() { return fone; } public void setFone(int fone) { this.fone = fone; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getMsg() { return db.getMsg(); } } DAO.java package agenda; import java.sql.*; import java.text.*; public class DAO { private Connection con; private Statement st; private ResultSet res; private int upd; //resposta da inserção private int fone; private String nome; private StringBuffer msg = new StringBuffer(); public void conecta() { try { //Class.forName("com.mysql.jdbc.Driver");//driver JConnector Class.forName("org.gjt.mm.mysql.Driver");//driver mysqlcon.jar con = DriverManager.getConnection//conexao ("jdbc:mysql://localhost/test","admin",""); //ok } catch (ClassNotFoundException cnfex) { msg.append("Erro Driver!"); } catch (SQLException sqlex) { msg.append("Não conectou ao banco!"); } } public void insere(String tb, String cps, String vals) { conecta(); try { st = con.createStatement(); String query = "INSERT INTO "+tb+" "+cps+" values "+vals; upd = st.executeUpdate (query); if (upd != 0) //teste retorno do banco msg.append("Inserção OK!"); else msg.append("Erro inserção!"); desconecta(); } catch (SQLException sqlex) { msg.append("Erro na declaracao do Insert."); } } public void exclui(String tb, String condicao) { conecta(); try { st = con.createStatement(); String query = "DELETE FROM "+tb+ " WHERE "+ condicao; upd = st.executeUpdate (query); if (upd != 0) //teste retorno do banco msg.append("Exclusão OK!"); else msg.append("Erro Exclusão!"); desconecta(); } catch (SQLException sqlex) { msg.append("Erro na declaracao do Delete."); } } public void listarTodos(String tb) { conecta(); try { st = con.createStatement(); String query = "SELECT * FROM "+tb; res = st.executeQuery (query); //abre tabela msg.append( "<table width=300 border=1>"+ "<tr><td><b>Nome</b></td>"+ "<td><b>Fone</b></td></tr>"); while ( res.next() ) { nome=res.getString("nome"); fone=res.getInt("fone"); msg.append("<tr><td>"+nome+"</td><td>"+fone+"</td></tr>"); } //fecha tabela msg.append("</table>"); desconecta(); } catch (SQLException sqlex) { msg.append("Erro na declaracao do Select."); } } public void desconecta() { try { con.close(); } catch (SQLException sqlex) { msg.append("Não conseguiu desconectar do banco!"); } } public String getMsg() { return msg.toString(); } }//class Quando vou fazee o insert dos dados no bt dá o seguinte erro: ERRO: type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370) 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.jav a:362) root cause java.lang.NullPointerException agenda.DAO.insere(DAO.java:44) agenda.Pessoa.inserePessoa(Pessoa.java:21) org.apache.jsp.agenda_jsp._jspService(agenda_jsp.java:69) 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.jav a:362) note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs. Valeu amigos, aguardo respostas... Compartilhar este post Link para o post Compartilhar em outros sites
Makone 0 Denunciar post Postado Junho 24, 2006 Igor...Antes de mais nada, ja realizou um Debug, pra ver o do porque que seu programa esta trazendo NullPointerException?Não cheguei a ler seu codigo direito, mas como o proprio erro diz, ta aqui o problema:agenda.DAO.insere(DAO.java:44)agenda.Pessoa.inserePessoa(Pessoa.java:21)Verifica essas duas classes, e de preferencia, retira todas aquelas variaveis da qual você concatena junto a sintaxe do banco, e faz uma consulta parametrizada, assim sua aplicação roda mais rapida, fica mais inteligente, e evita certos tipos de erro.Não resolvendo seu problema, posta ai novamente que a gente da uma olhada mais a fundo. Mas antes de mais nada, DEBUG! Abraços. Compartilhar este post Link para o post Compartilhar em outros sites