[Resolvido]DAO não está inserindo no banco

2 respostas
jv.nicocelli

Pessoal, estou com dificuldade para fazer um CRUD funcionar, utilizando DAO.

Se for possível, gostaria de uma ajuda de você para descobrir oque está errado.

Abaixo segue o código.

Classe de conexão com o banco.

public class ConnectionEcommerceFactory {
	
	
	public static Connection getConnection() throws EcommerceDAOException{
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://localhost/webecommerce","root","");
		}catch (Exception e) {
			throw new EcommerceDAOException(e.getMessage());
		}
	}
	
	public static void closeConnection(Connection con, Statement ps)
		throws EcommerceDAOException{
		close(con,ps,null);
	}
	
	public static void closeConnection(Connection con)
		throws EcommerceDAOException{
		close(con, null, null);
	}
	
	public static void close(Connection con, Statement ps, ResultSet rs)
		throws EcommerceDAOException {
		try{
			if(rs != null) rs.close();
			if(ps!= null) ps.close();
			if(con != null) con.close();
		}catch (Exception e) {
			throw new EcommerceDAOException(e.getMessage());
		}
	}

}

O bean.

public class FornecedorBean {
	
	private Fornecedor fornecedor = new Fornecedor();
	private DataModel model;

	
	
	
	public String novoFornecedor(){
		this.fornecedor = new Fornecedor();
		return "novoFornecedor";
	}
	public DataModel getTodos() throws EcommerceDAOException{
		InterfaceFonecedorDAO dao = new FornecedorDao();
		this.model = new ListDataModel(dao.todosFornecedores());
		return  model;
	}
	public String create()  throws EcommerceDAOException{
		InterfaceFonecedorDAO dao = new FornecedorDao();
		dao.salvar(fornecedor);
		return "sucesso_create";
	}
	public String editar(){
		Fornecedor fornecedor = getFornecedorFromEditOrDelete();
		setFornecedor(fornecedor);
		return "altFornecedor";
	}
	public String excluir() throws EcommerceDAOException{
		InterfaceFonecedorDAO dao = new FornecedorDao();
		Fornecedor fornecedor = getFornecedorFromEditOrDelete();
		dao.excluir(fornecedor);
		return "sucesso_exc";
	}
	public Fornecedor getFornecedorFromEditOrDelete(){
		Fornecedor fornecedor = (Fornecedor) model.getRowData();
		return fornecedor;
	}
	public Fornecedor getFornecedor() {
		return fornecedor;
	}
	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}
	

}

A interface DAO.

public interface InterfaceFonecedorDAO {
	
	void atualizar(Fornecedor fornecedor) throws EcommerceDAOException;
	void salvar(Fornecedor fornecedor) throws  EcommerceDAOException;
	void excluir(Fornecedor fornecedor) throws EcommerceDAOException;
	List todosFornecedores() throws EcommerceDAOException;

}

A classe fornecedor DAO.

public class FornecedorDao implements InterfaceFonecedorDAO {

	private Connection con;
	
	public FornecedorDao() throws EcommerceDAOException {
		try{
			this.con = ConnectionEcommerceFactory.getConnection();
		} catch (Exception e) {
			throw new EcommerceDAOException("Erro: " + ":\n" + e.getMessage());
		}
	}

	@Override
	public void salvar(Fornecedor fornecedor) throws EcommerceDAOException {

		PreparedStatement ps = null;
		Connection con = null;
		if(fornecedor == null)
			throw new EcommerceDAOException("O valor passado não pode ser nulo!");
		try{
			String sql = "INSERT INTO fornecedor (nome) values (?)";
			con = this.con;
			ps = con.prepareStatement(sql);
			ps.setString(1,fornecedor.getNome());
		} catch (SQLException e) {
			throw new EcommerceDAOException("Erro ao inserir dados! " + e);
		} finally{
			ConnectionEcommerceFactory.closeConnection(con, ps);
		}
	}

	@Override
	public void excluir(Fornecedor fornecedor) throws EcommerceDAOException {
		PreparedStatement ps = null;
		Connection con = null;

		if (fornecedor == null)
			throw new EcommerceDAOException("O valor passado não pode ser nulo");
		try {
			con = this.con;
			ps = con.prepareStatement("delete from fornecedor where nome=?");
			ps.setString(1, fornecedor.getNome());
			ps.executeUpdate();
		} catch (SQLException e) {
			throw new EcommerceDAOException("Erro ao excluir dados: " + e);
		} finally {
			ConnectionEcommerceFactory.closeConnection(con, ps);
		}

	}

	@Override
	public List todosFornecedores() throws EcommerceDAOException {
		PreparedStatement ps = null;
		Connection con = null;
		ResultSet rs = null;

		try {
			con = this.con;
			ps = con.prepareStatement("select * from fornecedor");
			rs = ps.executeQuery();
			List<Fornecedor> list = new ArrayList<Fornecedor>();
			while (rs.next()) {
				String nome = rs.getString(1);
				list.add(new Fornecedor(nome));
			}
			return list;
		} catch (SQLException e) {
			throw new EcommerceDAOException(e);
		} finally {
			ConnectionEcommerceFactory.close(con, ps, rs);
		}

	}

	@Override
	public void atualizar(Fornecedor fornecedor) throws EcommerceDAOException {
		PreparedStatement ps = null;
		Connection con = null;
		if (fornecedor == null)
			throw new EcommerceDAOException("O valor não pode ser nulo");
		try {
			String sql = "UPDATE fornecedor SET nome=?";
					

			con = this.con;
			ps = con.prepareStatement(sql);
			ps.setString(1, fornecedor.getNome());
			
			ps.executeUpdate();
		} catch (SQLException e) {
			throw new EcommerceDAOException("Erro ao atualizar os dados " + e);
		} finally {
			ConnectionEcommerceFactory.closeConnection(con, ps);
		}
		
	}

}

E por ultimo a página novoFornecedor.xhtml.

<!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"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head></h:head>
<h:body>
	<f:view>
		<h:form id="cadastro">

			<rich:panel>
				<f:facet name="header">
					<h:outputText value="Cadastro de Fornecedores" />
				</f:facet>

				<h:panelGrid columns="3">

					<h:outputText value="Nome" />
					<h:inputText value="#{fornecedorBean.fornecedor.nome}"
						id="fornecedor" label="Fornecedor" required="true" />
					<rich:messages for="fornecedor">
						<f:facet name="errorMarker">
							<h:graphicImage value="/images/error.gif" />
						</f:facet>
					</rich:messages>

					<f:facet name="footer">
						<a4j:commandButton action="#{fornecedorBean.create()}"
							value="Cadastrar"></a4j:commandButton>
					</f:facet>

				</h:panelGrid>

			</rich:panel>
		</h:form>
	</f:view>
</h:body>

</html>

Quando vou cadastrar um novo fornecedor não é gerada nenhuma exception mais também não é inserido nada no banco.

2 Respostas

williamdasflores

Ta faltando o ps.executeUpdate().

try{  
            String sql = "INSERT INTO fornecedor (nome) values (?)";  
            con = this.con;  
            ps = con.prepareStatement(sql);  
            ps.setString(1,fornecedor.getNome());  
 ps.executeUpdate();//falta inserir isso
jv.nicocelli

Cara, muito obrigado.

Já testei e deu certo…

Escrevi tanta coisa pra um problema tão simples… hehe

Grato.

Criado 23 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 2
Participantes 2