Alguem me ajuda nao esta salvando no banco de dados?

17 respostas
jsfprogramaçãopostgresqlprimefacesjava
D

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

C

Ola,

Ja tentou assim?

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

ola boa tarde ainda nao

D
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

D

teria que ser aqui porem estou usando executeupdate

C

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

D

agora esta dando isso

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

:confused:

D

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

D

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

C

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

D

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");
}

}
}

C

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

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

C

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?

D

sim olhei sim

D

como faço um debug?

C

De uma olhada nessa apostila.

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

D

esta bem vou ver obrigada

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