Agenda

4 respostas
T

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:
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();
		}
	}
}

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

Para adicionar contato na agenda tenho o seguinte:
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();
		
		
	}

}
Aqui vão os códigos de inserção e seleção
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;
	}

}

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?

4 Respostas

lrpfeliciano

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.

T

Perdão cara…

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

T

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

Pode me auxiliar nisso?

lrpfeliciano

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

Criado 24 de novembro de 2010
Ultima resposta 25 de nov. de 2010
Respostas 4
Participantes 2