Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Igor FV

Erro na inserção de registro no bd MYSQL com JSP...

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.