Conexao.fechar()

5 respostas
tunpaio

Olá, sou novo em forum, estou estudando java utilizando o Eclipse a uns 5 dias, e começei a programar uns exemplos da apostila que utilizo na faculdade, mas está dando um erro, e não sei como resolvê-lo. Não sei o local exato de colocar minhas dúvidas, peço desculpa por algum erro ok?

No meu exercício, tem uma classe criada para conexao que se chama ConexaoBd, e um jsp que faz o teste, que da ok na conexao, ai fiz uma classe pra colocar o incluir, excluir..., e um jsp que faz a inserção com form, mas está sempre dando o erro de resposta que está na apostila, como Erro ao cadastrar contato.

Meus códigos seguem abaixo:

package database;

import java.sql.*;

public class ConexaoBd {
	
	Connection con;

	public boolean conectar() {
		String url;
		String usuario;
		String senha;	
		
		try {
			Class.forName("com.mysql.jdbc.Driver");

			url = "jdbc:mysql://localhost:3306/dwjdb";
			usuario = "flavio";
			senha = "22445511";
			
			con = DriverManager.getConnection(url,usuario,senha);			
			
			return true;
			
		}
		catch (Exception e) {
			e.printStackTrace();
			
			return false;
		}
	}
	public void fechar() {
		try {
			con.close();
		}
		catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public Connection getConexao()
	{
		return con;
	}
}
package database;

import java.sql.*;

public class Agenda {
	
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	public void setConexao(Connection con) {
		this.con = con;
	}
	
	public boolean inserir(String nome, char sexo, int dia_niver, int mes_niver, String fone)
	{
		try {
			int id = gerarId();
			ps = con.prepareStatement("INSERT INTO agenda VALUES (?, ?, ?, ?, ?, ?)");
			ps.setInt(1, id);
			ps.setString(2, nome);
			ps.setString(2, String.valueOf(sexo));
			ps.setInt(4, dia_niver);
			ps.setInt(5, mes_niver);
			ps.setString(6, fone);
			ps.executeUpdate();
			
			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return false;
		}
}
	public int gerarId()
	{
		String novoId;
		try {
			ps = con.prepareStatement("SELECT MAX(id) as novoid FROM agenda");
			rs = ps.executeQuery();
			rs.next();
			
			novoId = rs.getString("novoid");
			
			if (novoId == null)
				return 1;
			else
				return Integer.parseInt(novoId) + 1;
		}
		catch (Exception e)
		{
				e.printStackTrace();
				return 0;
		}
	}
	public boolean atualizar(int id, String nome, char sexo, int dia_niver, int mes_niver, String fone)
	{
		try {
			ps = con.prepareStatement("UPDATE agenda " +
								"SET nome = ?, " +
								"sexo = ?, " +
								"dia_niver = ?, " +
								"mes_niver = ?, " +
								"fone = ?, " +
								"WHERE id = ?");
			ps.setString(1, nome);
			ps.setString(2, String.valueOf(sexo));
			ps.setInt(3, dia_niver);
			ps.setInt(4, mes_niver);
			ps.setString(5, fone);
			ps.setInt(6, id);
			ps.executeUpdate();
			
			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return false;
		}
	}
	
	public boolean excluir(int id)
	{
		try {
			ps = con.prepareStatement("DELETE FROM agenda WHERE id = ?");
			ps.setInt(1, id);
			ps.executeUpdate();
			
			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return false;
		}
	}
	
	public ResultSet listar()
	{
		try {
			ps = con.prepareStatement("SELECT * FROM agenda");
			rs = ps.executeQuery();
			return rs;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}
	}
}
<jsp:useBean id="conexao" scope="page" class="database.ConexaoBd" />
<jsp:useBean id="agenda" scope="page" class="database.Agenda" />

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Inserir agenda</title>
</head>
<body>
<%
String nome = request.getParameter("nome");
char sexo = request.getParameter("sexo").charAt(0);
int dia_niver = Integer.parseInt(request.getParameter("dia_niver"));
int mes_niver = Integer.parseInt(request.getParameter("mes_niver"));
String fone = request.getParameter("fone");

conexao.conectar();
agenda.setConexao(conexao.getConexao());

if (agenda.inserir(nome, sexo, dia_niver, mes_niver, fone))
	out.println("<h2>Contato cadastrado com sucesso!</h2>");
	else
	out.println("<h2>Erro ao tentar cadastrar contato!</h2>");

conexao.fechar();
	%>
<a >Voltar</a>
</body>
</html>

o último é que faz a inserção, coisa que não da certo de jeito nenhum, sempre da o erro do else ai, aparece a mensagem Erro ao tentar cadastrar contato!

Obrigado pela ajuda..

5 Respostas

drsmachado

Quando você executa este código, o console da IDE (Eclipse ou Netbeans) printa um stackTrace de erro.
Por favor, copie e cole este erro para verificarmos.

Um chute, você está importando o driver de conexão?

tunpaio

Uso o eclipse helios, mas ele não da nenhum stackTrace, ou se dá não sei onde acho ele, somente roda a página e da a mensagem que não pode ser cadastrado.

Sobre o chute, você diz de add external jars e colocar o jar do sql lá? Se for isso fiz sim.

drsmachado

Quando o erro aparecer, vá até o eclipse e procure pela aba “Console”. Ali deve estar o stackTrace do erro, afinal há uma chamada para isto no catch, antes do return false.

tunpaio

Olá amigos, já achei o erro, agradeço as respostas, no array do primeiro código tinha repetido o valor 2, por isso dava erro, mas não respondia nenhum erro específico pra mim.

Obrigado!

A

drsmachado:
Quando você executa este código, o console da IDE (Eclipse ou Netbeans) printa um stackTrace de erro.
Por favor, copie e cole este erro para verificarmos.

Um chute, você está importando o driver de conexão?

Exatamente.

Sempre que possível poste o erro e tente ser o mais sucinto com as palavras assim que
manja mesmo bate o olho e já saca ao invés de ficar lendo e lendo rs…

Abraços,

Criado 9 de junho de 2011
Ultima resposta 9 de jun. de 2011
Respostas 5
Participantes 3