Alguem me ajuda nao esta salvando no banco de dados?

17 respostas
jsfprogramaçãopostgresqlprimefacesjava
Dfodani

Ola fiz o codigo como vi nas video aulas do professor sergio roberto delfino porem nao salva no banco de dados pq? e na video aula salva? nao sei o que fiz de errado se os codigos estao iguais.

a conexao esta funcionando normalmente e nao apresenta nenhum erro mas nao salva

o banco que estou usando e postgre sql

segue codigo

FabricanteDAO

package br.com.drogaria.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import br.com.drogaria.factory.ConexaoFactory;

import br.com.drogaria.domain.Fabricante;

public class FabricanteDAO{

public void salvar(Fabricante f) throws SQLException{

StringBuilder sql = new StringBuilder();

sql.append("INSERT INTO fabricante “);

sql.append(”(descricao) ");

sql.append("VALUES (?) ");
Connection conexao = ConexaoFactory.conectar();
	
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setString(1, f.getDescricao());
	
	comando.executeUpdate();
}

public void excluir(Fabricante f)throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("DELETE FROM fabricante ");
	sql.append("WHERE codigo = ? ");
	
	Connection conexao = ConexaoFactory.conectar();
	
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setLong(1,f.getCodigo());
	
	comando.executeUpdate();
}

public void editar(Fabricante f)throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("UPDATE fabricante ");
	sql.append("SET descricao = ? ");
	sql.append("WHERE codigo = ? ");
	
	Connection conexao = ConexaoFactory.conectar();
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setString(1, f.getDescricao());
	comando.setLong(2, f.getCodigo());
	
	comando.executeUpdate();
}
public Fabricante BuscarPorCodigo(Fabricante f) throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("SELECT codigo,descricao ");
	sql.append("FROM fabricante ");
	sql.append("WHERE codigo = ? ");
	
	Connection conexao = ConexaoFactory.conectar();
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setLong(1, f.getCodigo());
	
	ResultSet resultado = comando.executeQuery();
	
	Fabricante retorno = null;
	
	if(resultado.next()){
		retorno = new Fabricante();
		retorno.setCodigo(resultado.getLong("codigo"));
		retorno.setDescricao(resultado.getString("descricao"));
	}
	return retorno;
}

public ArrayList<Fabricante> listar() throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("SELECT codigo, descricao ");
	sql.append("FROM fabricante ");
	sql.append("ORDER BY descricao ASC ");
	
	Connection conexao = ConexaoFactory.conectar();
	
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	ResultSet resultado = comando.executeQuery();
	
	ArrayList<Fabricante> lista = new ArrayList<Fabricante>();
	
	while(resultado.next()){
		Fabricante f = new Fabricante();
		f.setCodigo(resultado.getLong("codigo"));
		f.setDescricao(resultado.getString("descricao"));
		
		lista.add(f);
	}
	
	return lista;
	
}

public ArrayList<Fabricante> buscarPorDescricao(Fabricante f) throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("SELECT codigo, descricao ");
	sql.append("FROM fabricante ");
	sql.append("WHERE descricao LIKE ? ");
	sql.append("ORDER BY descricao ASC ");
	
      Connection conexao = ConexaoFactory.conectar();
	
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setString(1, "%" + f.getDescricao() + "%");
	
     ResultSet resultado = comando.executeQuery();
	
	ArrayList<Fabricante> lista = new ArrayList<Fabricante>();
	
	while(resultado.next()){
		Fabricante item = new Fabricante();
		item.setCodigo(resultado.getLong("codigo"));
		item.setDescricao(resultado.getString("descricao"));
		
		lista.add(item);
	}
	
	return lista;
	
}

FabricanteBean

package br.com.drogaria.bean;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import javax.faces.model.ListDataModel;

import br.com.drogaria.dao.FabricanteDAO;
import br.com.drogaria.domain.Fabricante;

@ManagedBean(name=MBFabricante)

@ViewScoped

public class FabricanteBean {

private Fabricante fabricante;

private ListDataModel itens;
public Fabricante getFabricante() {
	return fabricante;
}

public void setFabricante(Fabricante fabricante) {
	this.fabricante = fabricante;
}

public ListDataModel<Fabricante> getItens() {
	return itens;
}

public void setItens(ListDataModel<Fabricante> itens) {
	this.itens = itens;
}
@PostConstruct
public void prepararPesquisa(){
	try{
	FabricanteDAO dao = new FabricanteDAO();
	ArrayList<Fabricante> lista = dao.listar();
	itens = new ListDataModel<Fabricante>(lista);
	}catch(SQLException ex){
		ex.printStackTrace();
	}
}

public void prepararNovo(){
fabricante = new Fabricante();

}
public void novo(){ 
	try{
	FabricanteDAO dao = new FabricanteDAO();
	dao.salvar(fabricante);
	ArrayList<Fabricante> lista = dao.listar(); 
	itens = new ListDataModel<Fabricante>(lista);
	}catch(SQLException ex){
		ex.printStackTrace();
	}
}

}

Fabricante

package br.com.drogaria.domain;

public class Fabricante {

private Long codigo;

private String descricao;
public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}
@Override
public String toString() {
	String saida = codigo + "----" +descricao;
	return saida;
}

}

Fabricante.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p=“http://primefaces.org/ui"
xmlns:ui=“http://java.sun.com/jsf/facelets"
template=”/templates/modeloSistema.xhtml”>

<ui:define name="menu">
	<ui:include src="/includes/menuPrincipal.xhtml" />
</ui:define>

<ui:define name="conteudo">
	<h:form>
		<p:dataTable emptyMessage="Nenhum Registro Encontrado"
			value="#{MBFabricante.itens}" var="item" paginator="true" rows="10">
			<f:facet name="header">
			   Fabricante - Listagem
			</f:facet>
			<p:column headerText="Código: " sortBy="#{item.codigo}"
				filterBy="#{item.codigo}">
				<h:outputText value="#{item.codigo}" />
			</p:column>
			<p:column headerText="Descrição: " sortBy="#{item.descricao}"
				filterBy="#{item.descricao}">
				<h:outputText value="#{item.descricao}" />
			</p:column>
			<f:facet name="footer">
			   <p:commandButton value="Novo" actionListener="#{MBFabricante.prepararNovo}" oncomplete="PF('dlgFabNovo').show();"
			   />
			</f:facet>
		</p:dataTable>
	</h:form>
	<p:dialog widgetVar="dlgFabNovo" closable="false" draggable="false"
		resizable="false" modal="true" appendTo="@(body)" header="Fabricante - Novo">
		<h:form>
			<h:panelGrid columns="2">
				<h:outputLabel value="Descrição: "/>
				<h:inputText size="30" maxlength="50" value="#{MBFabricante.fabricante.descricao}" />
			</h:panelGrid>
			<h:panelGrid columns="2">
				<p:commandButton value="Gravar" actionListener="#{MBFabricante.novo}" 
				oncomplete="PF('dlgFabNovo').hide();"/>
				<p:commandButton value="Cancelar" onclick="PF('dlgFabNovo').hide();" />
			</h:panelGrid>
			
		</h:form>
	</p:dialog>
</ui:define>

</ui:composition>

17 Respostas

campelo.m

Ola,

Ja tentou assim?

comando.execute();
	comando.close();
	System.out.println("Gravado!");
	conexao.close();
Dfodani

ola boa tarde ainda nao

Dfodani
public void salvar(Fabricante f) throws SQLException{

StringBuilder sql = new StringBuilder();

sql.append("INSERT INTO fabricante “);

sql.append(”(descricao) ");

sql.append("VALUES (?) ");
Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString(1, f.getDescricao());

comando.executeUpdate();

}

parte do salvar

Dfodani

teria que ser aqui porem estou usando executeupdate

campelo.m

Exatamente ai.
As duas opçoes resolvem, o commit esta auto?

Dfodani

agora esta dando isso

HTTP Status 404 - /pages/fabricante.xhtml Not Found in ExternalContext as a Resource

:confused:

Dfodani

consegui resolver o erro abaixo fiz exatamente como me disse no FabricanteDAO

public void salvar(Fabricante f) throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("INSERT INTO fabricante ");
	sql.append("(descricao) ");
	sql.append("VALUES (?) ");
	
	Connection conexao = ConexaoFactory.conectar();
	
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setString(1, f.getDescricao());
	
	comando.execute();
	comando.close();
	System.out.println("Gravado!");
	conexao.close();
}

porem nada acontece nao apresenta nem mensagem de erro acredita esse commit nao tem no meu projeto

Dfodani

continua sem gravar o estranho e que na video aula dele grava mas aqui nao

campelo.m

Qual o servidor que esta usando, post a sua class de conexão

Dfodani

package br.com.drogaria.factory;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class ConexaoFactory {

private static final String USUARIO = "postgres";
private static final String SENHA = "33462634";
private static final String URL = "jdbc:postgresql:drogaria";

public static Connection conectar() throws SQLException{
	DriverManager.registerDriver(new org.postgresql.Driver());
	Connection conexao = DriverManager.getConnection(URL, USUARIO,SENHA);
	return conexao;
}
public static void main(String[] args) {
	try{
	Connection conexao = ConexaoFactory.conectar();
	System.out.println("Conexao Realizada com Sucesso");
	}catch(SQLException ex){
		ex.printStackTrace();
		System.out.println("Não foi possivel realizar a conexao");
}

}
}

campelo.m

Tenta assim para ver se vai.

public void salvar(Fabricante f) throws SQLException{
	StringBuilder sql = new StringBuilder();
	sql.append("INSERT INTO fabricante ");
	sql.append("(descricao) ");
	sql.append("VALUES (?) ");
	
	Connection conexao = ConexaoFactory.conectar();
	conexao.setAutoCommit(Boolean.FALSE);
	PreparedStatement comando = conexao.prepareStatement(sql.toString());
	comando.setString(1, f.getDescricao());
	
	int i = comando.executeUpdate();
        if(i > 0){ 
           System.out.println(i + " insert realizado");
        }
	comando.close();
        conexao.commit();
	conexao.close();
}
Dfodani

eu tentei mas sem exito da uma olhada no meu fabricante.xhtml e no meu managedbean FabricanteBean foi os dois tambem que mexi pra salvar nao apresento erro mas nao salva quem sabe vc consegue enxergar algum erro nos dois

<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p=“http://primefaces.org/ui"
xmlns:ui=“http://java.sun.com/jsf/facelets"
template=”/templates/modeloSistema.xhtml”>

<ui:define name="menu">
	<ui:include src="/includes/menuPrincipal.xhtml" />
</ui:define>

<ui:define name="conteudo">
	<h:form>
		<p:dataTable emptyMessage="Nenhum Registro Encontrado"
			value="#{MBFabricante.itens}" var="item" paginator="true" rows="10">
			<f:facet name="header">
			   Fabricante - Listagem
			</f:facet>
			<p:column headerText="Código: " sortBy="#{item.codigo}"
				filterBy="#{item.codigo}">
				<h:outputText value="#{item.codigo}" />
			</p:column>
			<p:column headerText="Descrição: " sortBy="#{item.descricao}"
				filterBy="#{item.descricao}">
				<h:outputText value="#{item.descricao}" />
			</p:column>
			
			<p:column headerText="Opçoes">
			<p:commandButton icon="ui-icon-trash" actionListener="#{MBFabricante.prepararExcluir}"
			oncomplete="PF('dlgFabExcluir').show;"/>
			</p:column>
			<f:facet name="footer">
			   <p:commandButton value="Novo" actionListener="#{MBFabricante.prepararNovo}" oncomplete="PF('dlgFabNovo').show();"
			        />
			</f:facet>
		</p:dataTable>
	</h:form>
	<p:dialog widgetVar="dlgFabNovo" closable="false" draggable="false"
		resizable="false" modal="true" appendTo="@(body)" header="Fabricante - Novo">
		<h:form>
			<h:panelGrid columns="2">
				<h:outputLabel value="Descrição: "/>
				<h:inputText size="30" maxlength="50" value="#{MBFabricante.fabricante.descricao}" />
			</h:panelGrid>
			<h:panelGrid columns="2">
				<p:commandButton value="Gravar" actionListener="#{MBFabricante.novo}" 
				oncomplete="PF('dlgFabNovo').hide();" update=" :msgGlobal"/>
				<p:commandButton value="Cancelar" onclick="PF('dlgFabNovo').hide();" />
			</h:panelGrid>
			
		</h:form>
	</p:dialog>
	<p:dialog widgetVar="dlgFabExcluir" closable="false"
	 draggable="false" resizable="false"
	 modal="true" appendTo="@(body)"
	 header="Fabricante - Excluir">
	 <h:form id="frmFabExcluir">
	 <h:panelGrid id="pnlFabExcluir" Columns="2">
	 <h:outputText value="Código: "/>
	 <h:outputText value="#{MBFabricante.fabricante.codigo}"/>
	 
	  <h:outputText value="Descrição: "/>
	  <h:outputText value="#{MBFabricante.fabricante.descricao}"/>
	 </h:panelGrid>
	 
	 <h:panelGrid columns="2">
	 <p:commandButton value="Excluir" actionListener="#{MBFabricante.excluir}"
	 oncomplete="PF('dlgFabExcluir').hide();" />
	 <p:commandButton value="Cancelar" onclick="PF('dlgFabExcluir').hide();"/>
	 </h:panelGrid>
	 
	 </h:form>
	
	</p:dialog>
</ui:define>

</ui:composition>

FabricanteBean

package br.com.drogaria.bean;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.annotation.PostConstruct;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import javax.faces.model.ListDataModel;
import br.com.drogaria.dao.FabricanteDAO;

import br.com.drogaria.domain.Fabricante;

import br.com.drogaria.util.JSFUtil;
@ManagedBean(name = MBFabricante)

@ViewScoped

public class FabricanteBean {

private Fabricante fabricante;

private ListDataModel itens;
public Fabricante getFabricante() {

return fabricante;

}
public void setFabricante(Fabricante fabricante) {

this.fabricante = fabricante;

}
public ListDataModel getItens() {

return itens;

}
public void setItens(ListDataModel itens) {

this.itens = itens;

}
@PostConstruct

public void prepararPesquisa() {

try {

FabricanteDAO dao = new FabricanteDAO();

ArrayList lista = dao.listar();

itens = new ListDataModel(lista);

} catch (SQLException ex) {

ex.printStackTrace();

JSFUtil.adicionarMensagemErro(ex.getMessage());

}

}
public void prepararNovo(){

fabricante = new Fabricante();

}
public void novo() {

try {

FabricanteDAO dao = new FabricanteDAO();

dao.salvar(fabricante);

ArrayList lista = dao.listar();

itens = new ListDataModel(lista);
JSFUtil.adicionarMensagemSucesso(Fabricante salvo com sucesso.);

} catch (SQLException ex) {

ex.printStackTrace();

JSFUtil.adicionarMensagemErro(ex.getMessage());

}

}

public void prepararExcluir(){

fabricante = itens.getRowData();

}

public void excluir(){

try {

FabricanteDAO dao = new FabricanteDAO();

dao.excluir(fabricante);

ArrayList lista = dao.listar();

itens = new ListDataModel(lista);

JSFUtil.adicionarMensagemSucesso(Fabricante removido com sucesso.);

} catch (SQLException ex) {

ex.printStackTrace();

JSFUtil.adicionarMensagemErro(ex.getMessage());

}

}

}

desde ja agradeço por tentar me ajudar

campelo.m

faz um debug e veja se o obj chega no bean e dao.
Pergunta meio que tosca mais, voce olhou no banco para ver se esta sendo salvo?

Dfodani

sim olhei sim

Dfodani

como faço um debug?

campelo.m

De uma olhada nessa apostila.

https://www.caelum.com.br/apostila-java-orientacao-objetos/apendice-debugging/#22-2-debugando-no-eclipse

Dfodani

esta bem vou ver obrigada

Criado 19 de julho de 2017
Ultima resposta 20 de jul. de 2017
Respostas 17
Participantes 2