Agenda

Boa tarde.

Estamos desenvolvendo uma agenda em servlet para a facu…
Estou com alguns problemas, um deles é a conexão com o Banco…tenho o AppServ instalado com MySql, PhpMyAdmin…
Tenho o seguinte código para a conexão com o banco:

[code]package dao;

import java.sql.Connection;

public class FabricaConexao {
private java.sql.Connection conexao;

public Connection fazConexao(){
	try{
		Class.forName("org.gjt.mm.mysql.Driver");
		conexao = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/agenda", "root", "brass");
	}
	catch (Exception e) {
		e.printStackTrace();
	}
	
	return conexao;
}

public void fecharConexao(){
	try {
		conexao.close();
		
	} catch (Exception e) {
		e.printStackTrace();
	}
}

}
[/code]

Pode algo estar errado neste código? Senha e usuário são esses mesmos…

Para adicionar contato na agenda tenho o seguinte:

[code]package action;

import java.io.IOException;
import java.sql.Connection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.Contato;

import dao.FabricaConexao;
import dao.JDBCContatoDAO;

public class AdicionarContato extends HttpServlet {
private static final long serialVersionUID = 1L;

public AdicionarContato() {
    super();
   
}


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	System.out.println("servlet executando função de gravação de contato !!!!!");
	
	String nome = request.getParameter("nome");
	String telefone = request.getParameter("telefone");
	String celular = request.getParameter("celular");
	String nascimentoSt = request.getParameter("nascimento");
	String endereco = request.getParameter("endereco");
	String cidade = request.getParameter("cidade");
	String estado = request.getParameter("estado");
					
	Date date = null;
	try {
		date = new SimpleDateFormat("dd/MM/yyyy").parse(nascimentoSt);
	} catch (ParseException e) {
		e.printStackTrace();
	}		
	
	Contato novoContato = new Contato();
	novoContato.setCelular(celular);
	novoContato.setCidade(cidade);
	novoContato.setDataNascimento(date);
	novoContato.setEndereco(endereco);
	novoContato.setEstado(estado);
	novoContato.setCidade(cidade);	
	novoContato.setNome(nome);
	novoContato.setTelefone(telefone);
	
	FabricaConexao fabrica = new FabricaConexao();
	Connection conexao = fabrica.fazConexao();
	
	JDBCContatoDAO dao = new JDBCContatoDAO(conexao);
	dao.inserir(novoContato);
	
	fabrica.fecharConexao();
	
	
}

}
[/code]

Aqui vão os códigos de inserção e seleção

[code]package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import model.Contato;

public class JDBCContatoDAO implements ContatoDAO{

Connection conexao;

public JDBCContatoDAO(Connection conexao){
	this.conexao = conexao;
}


public void inserir(Contato contato) {
	String comando = "insert into contato (nome, telefone, celular, endereco, cidade, estado) "+
		"values(?,?,?,?,?,?)";
	
	PreparedStatement p;
	try {
		
		p = this.conexao.prepareStatement(comando);
		p.setString(1, contato.getNome());
		p.setString(2, contato.getTelefone());
		p.setString(3,contato.getCelular());
		p.setDate(4,  new java.sql.Date(  contato.getDataNascimento().getTime() )  );
		p.setString(5, contato.getEndereco());
		p.setString(6,contato.getCidade());
		p.setString(7, contato.getEstado());
		
		p.execute();
		
		
		
	} catch (SQLException e) {			
		e.printStackTrace();
	}
	
	
		
	
}

public List<Contato> listarTodos() {
	
	List<Contato> contatos = new ArrayList<Contato>();
	
	
	String comando = "select * from contato";
	
	try {
		
		java.sql.Statement stmt = conexao.createStatement();
		ResultSet rs = stmt.executeQuery(comando);
		
		while( rs.next()){
			Contato contato = new Contato();
			
			int codigo = rs.getInt("codigo");
			String nome = rs.getString("nome");
			String telefone = rs.getString("telefone");
			String celular = rs.getString("telefone");
			Date data = rs.getDate("dataNascimento");
			String endereco = rs.getString("endereco");
			String cidade = rs.getString("cidade");
			String estado = rs.getString("estado");
			
			contato.setNome(nome);
			contato.setCodigo(codigo);
			contato.setTelefone(telefone);
			contato.setCelular(celular);
			contato.setDataNascimento(data);
			contato.setEndereco(endereco);
			contato.setCidade(cidade);
			contato.setEstado(estado);
			
			contatos.add(contato);
			
		}
		
	} catch (Exception e) {
		e.printStackTrace();
	}
	
	return contatos;
}

}
[/code]

Ele não insere…Tenho dados inseridos na agenda, porém ele não seleciona…Não sei se a conexão com o banco está correta…

Alguém pode ajudar?

Amigo

Pelo que eu vi no código acima, na String do sql você diz que vai mandar seis parâmetros (através dos ?), mas na verdade você está mandando 7 (através dos p.setAlgumaCoisa).

Espero ter ajudado.

Perdão cara…

Aí ele passa também dataNascimento …
Devo ter esquecido de colocar novamente, estava testando…mas ele passa 7 sim!

Acho que o problema já está na conexão com o banco MYSQL…

Pode me auxiliar nisso?

Amigão,

Desculpe, ontem a única coisa mais gritante que eu vi foi a String de conexão, mas hoje dando uma olhada melhor, eu vi que o seu Driver estava errado (não que você escrito errado, mas que esse Driver não é utilizado).

Então, troque o seu Driver MySQL:

Por

Espero ter te ajudado