Banco de Dados

13 respostas
H

Bom dia, sempre estou aqui no guj tirando minha duvidas, e hoje não é diferente kkk, estou com um problema com meu banco. Estou fazendo um sistema web de denuncia, nesse sistema ja tem a tabela cliente com id, nome, telefone, cpf, endereço, até aqui está funcionando. Só que na tela denuncia onde tem os atributos, idD, endeD, fotoD, tioD, e a chave estrangeira do cliente, não cadastrado, ele não mostra erros só não vai pro banco, alguém pode me tirar essa duvida, pois quero cadastrar uma denuncia e nela pegar o ID do cliente, dai quando for gerado o relatória terá todos os dados do cliente e da denuncia.
Amigo aqui esta as classes, a primeira é Cliente DAO
public class ClienteDAO {

public void salvar(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();
sql.append("INSERT INTO cliente ");
sql.append("( nome, endereco, cpf, telefone) ");
sql.append(" VALUES (?, ?, ?, ?)");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setString(1, c.getNome());
comando.setString(2, c.getEndereco());
comando.setString(3, c.getCpf());
comando.setString(4, c.getTelefone());

comando.executeUpdate();

}

public void excluir(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();
sql.append("DELETE FROM cliente ");
sql.append("WHERE   CodigoCliente = ? ");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setLong(1, c.getCodigoCliente());

comando.executeUpdate();

}

public void editar(Cliente c) throws SQLException {

StringBuilder sql = new StringBuilder();
sql.append("UPDATE cliente ");
sql.append("SET nome= ? , endereco = ? , cpf =? , telefone= ? ");
sql.append("WHERE CodigoCliente = ?");

Connection conexao = ConexaoFactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString(1, c.getNome());
comando.setString(2, c.getEndereco());
comando.setString(3, c.getCpf());
comando.setString(4, c.getTelefone());

comando.executeUpdate();

}

public Cliente buscarPorCodigo(Cliente c) throws SQLException {

StringBuilder sql = new StringBuilder();
sql.append("SELECT  CodigoCliente, nome , cpf, endereco, telefone ");
sql.append("FROM cliente ");
sql.append("WHERE CodigoCliente = ?");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setLong(1, c.getCodigoCliente());

ResultSet resultado = comando.executeQuery();

Cliente retorno = null;

if (resultado.next()) {

    retorno = new Cliente();
    retorno.setCodigoCliente(resultado.getLong("codico"));

    retorno.setNome(resultado.getString("nome"));
    retorno.setCpf(resultado.getString("cpf"));
    retorno.setEndereco(resultado.getString("endereco"));
    retorno.setTelefone(resultado.getString("telefone"));
}
return retorno;

}

public ArrayList listar() throws SQLException {

StringBuffer sql = new StringBuffer();
sql.append("SELECT CodigoCliente , nome , cpf, endereco , telefone ");
sql.append("FROM cliente ");
sql.append("ORDER BY nome ASC");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());
ResultSet resultado = comando.executeQuery();

ArrayList<Cliente> lista = new ArrayList<Cliente>();

while (resultado.next()) {

    Cliente c = new Cliente();

    c.setNome(resultado.getString("nome"));
    c.setCpf(resultado.getString("cpf"));
    c.setEndereco(resultado.getString("endereco"));
    c.setTelefone(resultado.getString("telefone"));
    c.setCodigoCliente(resultado.getLong("codigoCliente"));

    lista.add(c);

}

return lista;

}

public ArrayList buscarPorNome(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();
sql.append("SELECT CodigoCliente , nome, cpf , endereco, telefone ");
sql.append("FROM cliente ");
sql.append("WHERE nome LIKE ?");
sql.append("ORDER BY  nome ASC");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString(1, "%" + c.getNome() + "%");
comando.setString(2, "%" + c.getCpf() + "%");
comando.setString(3, "%" + c.getEndereco() + "%");
comando.setString(4, c.getTelefone());

ArrayList<Cliente> lista = new ArrayList<Cliente>();
comando.setString(1, c.getNome());
comando.setString(2, c.getCpf());
comando.setString(3, c.getEndereco());
comando.setString(4, c.getTelefone());
ResultSet resultado = comando.executeQuery();

while (resultado.next()) {

    Cliente item = new Cliente();

    item.setCodigoCliente(resultado.getLong("codico"));

    item.setNome(resultado.getString("nome"));
    item.setCpf(resultado.getString("cpf"));
    item.setEndereco(resultado.getString("endereco"));
    item.setTelefone(resultado.getString("telefone"));
    lista.add(item);

}

return lista;

}
}

e a classe DenunciaDAO
package br.com.sam.dao;

import br.com.sam.damain.Cliente;

import br.com.sam.factory.ConexaoFactory;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.logging.Level;

import java.util.logging.Logger;

/**
*

@author alexandre
*/
public class ClienteDAO {

public void salvar(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();

sql.append(INSERT INTO cliente );

sql.append(( nome, endereco, cpf, telefone) );

sql.append( VALUES (?, ?, ?, ?));

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setString(1, c.getNome());

comando.setString(2, c.getEndereco());

comando.setString(3, c.getCpf());

comando.setString(4, c.getTelefone());

comando.executeUpdate();
}

public void excluir(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();

sql.append("DELETE FROM cliente ");

sql.append("WHERE   CodigoCliente = ? ");

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setLong(1, c.getCodigoCliente());

comando.executeUpdate();
}

public void editar(Cliente c) throws SQLException {

StringBuilder sql = new StringBuilder();

sql.append("UPDATE cliente ");

sql.append("SET nome= ? , endereco = ? , cpf =? , telefone= ? ");

sql.append(WHERE CodigoCliente = ?);
Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setString(1, c.getNome());

comando.setString(2, c.getEndereco());

comando.setString(3, c.getCpf());

comando.setString(4, c.getTelefone());

comando.executeUpdate();
}

public Cliente buscarPorCodigo(Cliente c) throws SQLException {

StringBuilder sql = new StringBuilder();

sql.append("SELECT  CodigoCliente, nome , cpf, endereco, telefone ");

sql.append("FROM cliente ");

sql.append(WHERE CodigoCliente = ?);

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setLong(1, c.getCodigoCliente());

ResultSet resultado = comando.executeQuery();

Cliente retorno = null;

if (resultado.next()) {

retorno = new Cliente();
 retorno.setCodigoCliente(resultado.getLong("codico"));

 retorno.setNome(resultado.getString("nome"));
 retorno.setCpf(resultado.getString("cpf"));
 retorno.setEndereco(resultado.getString("endereco"));
 retorno.setTelefone(resultado.getString("telefone"));
}

return retorno;

}

public ArrayList listar() throws SQLException {

StringBuffer sql = new StringBuffer();

sql.append("SELECT CodigoCliente , nome , cpf, endereco , telefone ");

sql.append("FROM cliente ");

sql.append(ORDER BY nome ASC);

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());
ResultSet resultado = comando.executeQuery();

ArrayList lista = new ArrayList();

while (resultado.next()) {

Cliente c = new Cliente();

 c.setNome(resultado.getString("nome"));
 c.setCpf(resultado.getString("cpf"));
 c.setEndereco(resultado.getString("endereco"));
 c.setTelefone(resultado.getString("telefone"));
 c.setCodigoCliente(resultado.getLong("codigoCliente"));

 lista.add(c);

}

return lista;
}

public ArrayList buscarPorNome(Cliente c) throws SQLException {

StringBuffer sql = new StringBuffer();

sql.append("SELECT CodigoCliente , nome, cpf , endereco, telefone ");

sql.append("FROM cliente ");

sql.append(WHERE nome LIKE ?);

sql.append(ORDER BY  nome ASC);

Connection conexao = ConexaoFactory.conectar();

PreparedStatement comando = conexao.prepareStatement(sql.toString());

comando.setString(1, % + c.getNome() + %);

comando.setString(2, % + c.getCpf() + %);

comando.setString(3, % + c.getEndereco() + %);

comando.setString(4, c.getTelefone());
ArrayList lista = new ArrayList();

comando.setString(1, c.getNome());

comando.setString(2, c.getCpf());

comando.setString(3, c.getEndereco());

comando.setString(4, c.getTelefone());

ResultSet resultado = comando.executeQuery();

while (resultado.next()) {

Cliente item = new Cliente();

 item.setCodigoCliente(resultado.getLong("codico"));

 item.setNome(resultado.getString("nome"));
 item.setCpf(resultado.getString("cpf"));
 item.setEndereco(resultado.getString("endereco"));
 item.setTelefone(resultado.getString("telefone"));
 lista.add(item);

}

return lista;
}

}

13 Respostas

J

Fica inviável alguém te ajudar sem você postar a estrutura completa das tabelas e pelo menos os scripts SQL que deveriam cadastrar os registros nas tabelas.

H

Bom dia, sim ontem tava corrido aqui, mas posto hoje, tentei ontem de tudo e nada deu certo, já li vários livros e nada, só me resta aqui mesmo!

H

Amigo aqui esta as classes, a primeira é Cliente DAO
public class ClienteDAO {

public void salvar(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
    sql.append("INSERT INTO cliente ");
    sql.append("( nome, endereco, cpf, telefone) ");
    sql.append(" VALUES (?, ?, ?, ?)");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());

    comando.setString(1, c.getNome());
    comando.setString(2, c.getEndereco());
    comando.setString(3, c.getCpf());
    comando.setString(4, c.getTelefone());

    comando.executeUpdate();

}

public void excluir(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
    sql.append("DELETE FROM cliente ");
    sql.append("WHERE   CodigoCliente = ? ");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());

    comando.setLong(1, c.getCodigoCliente());

    comando.executeUpdate();
}

public void editar(Cliente c) throws SQLException {

    StringBuilder sql = new StringBuilder();
    sql.append("UPDATE cliente ");
    sql.append("SET nome= ? , endereco = ? , cpf =? , telefone= ? ");
    sql.append("WHERE CodigoCliente = ?");

    Connection conexao = ConexaoFactory.conectar();
    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    comando.setString(1, c.getNome());
    comando.setString(2, c.getEndereco());
    comando.setString(3, c.getCpf());
    comando.setString(4, c.getTelefone());

    comando.executeUpdate();

}

public Cliente buscarPorCodigo(Cliente c) throws SQLException {

    StringBuilder sql = new StringBuilder();
    sql.append("SELECT  CodigoCliente, nome , cpf, endereco, telefone ");
    sql.append("FROM cliente ");
    sql.append("WHERE CodigoCliente = ?");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());

    comando.setLong(1, c.getCodigoCliente());

    ResultSet resultado = comando.executeQuery();

    Cliente retorno = null;

    if (resultado.next()) {

        retorno = new Cliente();
        retorno.setCodigoCliente(resultado.getLong("codico"));

        retorno.setNome(resultado.getString("nome"));
        retorno.setCpf(resultado.getString("cpf"));
        retorno.setEndereco(resultado.getString("endereco"));
        retorno.setTelefone(resultado.getString("telefone"));
    }
    return retorno;

}

public ArrayList<Cliente> listar() throws SQLException {

    StringBuffer sql = new StringBuffer();
    sql.append("SELECT CodigoCliente , nome , cpf, endereco , telefone ");
    sql.append("FROM cliente ");
    sql.append("ORDER BY nome ASC");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    ResultSet resultado = comando.executeQuery();

    ArrayList<Cliente> lista = new ArrayList<Cliente>();

    while (resultado.next()) {

        Cliente c = new Cliente();

        c.setNome(resultado.getString("nome"));
        c.setCpf(resultado.getString("cpf"));
        c.setEndereco(resultado.getString("endereco"));
        c.setTelefone(resultado.getString("telefone"));
        c.setCodigoCliente(resultado.getLong("codigoCliente"));

        lista.add(c);

    }

    return lista;
}

public ArrayList<Cliente> buscarPorNome(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
    sql.append("SELECT CodigoCliente , nome, cpf , endereco, telefone ");
    sql.append("FROM cliente ");
    sql.append("WHERE nome LIKE ?");
    sql.append("ORDER BY  nome ASC");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    comando.setString(1, "%" + c.getNome() + "%");
    comando.setString(2, "%" + c.getCpf() + "%");
    comando.setString(3, "%" + c.getEndereco() + "%");
    comando.setString(4, c.getTelefone());

    ArrayList<Cliente> lista = new ArrayList<Cliente>();
    comando.setString(1, c.getNome());
    comando.setString(2, c.getCpf());
    comando.setString(3, c.getEndereco());
    comando.setString(4, c.getTelefone());
    ResultSet resultado = comando.executeQuery();

    while (resultado.next()) {

        Cliente item = new Cliente();

        item.setCodigoCliente(resultado.getLong("codico"));

        item.setNome(resultado.getString("nome"));
        item.setCpf(resultado.getString("cpf"));
        item.setEndereco(resultado.getString("endereco"));
        item.setTelefone(resultado.getString("telefone"));
        lista.add(item);

    }

    return lista;
}

}

e a classe DenunciaDAO
package br.com.sam.dao;

import br.com.sam.damain.Cliente;

import br.com.sam.factory.ConexaoFactory;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.logging.Level;

import java.util.logging.Logger;

/**
*

  • @author alexandre
    */
    public class ClienteDAO {

    public void salvar(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
     sql.append("INSERT INTO cliente ");
     sql.append("( nome, endereco, cpf, telefone) ");
     sql.append(" VALUES (?, ?, ?, ?)");
    
     Connection conexao = ConexaoFactory.conectar();
    
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
    
     comando.setString(1, c.getNome());
     comando.setString(2, c.getEndereco());
     comando.setString(3, c.getCpf());
     comando.setString(4, c.getTelefone());
    
     comando.executeUpdate();
    

    }

    public void excluir(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
     sql.append("DELETE FROM cliente ");
     sql.append("WHERE   CodigoCliente = ? ");
    
     Connection conexao = ConexaoFactory.conectar();
    
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
    
     comando.setLong(1, c.getCodigoCliente());
    
     comando.executeUpdate();
    

    }

    public void editar(Cliente c) throws SQLException {

    StringBuilder sql = new StringBuilder();
     sql.append("UPDATE cliente ");
     sql.append("SET nome= ? , endereco = ? , cpf =? , telefone= ? ");
     sql.append("WHERE CodigoCliente = ?");
    
     Connection conexao = ConexaoFactory.conectar();
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
     comando.setString(1, c.getNome());
     comando.setString(2, c.getEndereco());
     comando.setString(3, c.getCpf());
     comando.setString(4, c.getTelefone());
    
     comando.executeUpdate();
    

    }

    public Cliente buscarPorCodigo(Cliente c) throws SQLException {

    StringBuilder sql = new StringBuilder();
     sql.append("SELECT  CodigoCliente, nome , cpf, endereco, telefone ");
     sql.append("FROM cliente ");
     sql.append("WHERE CodigoCliente = ?");
    
     Connection conexao = ConexaoFactory.conectar();
    
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
    
     comando.setLong(1, c.getCodigoCliente());
    
     ResultSet resultado = comando.executeQuery();
    
     Cliente retorno = null;
    
     if (resultado.next()) {
    
         retorno = new Cliente();
         retorno.setCodigoCliente(resultado.getLong("codico"));
    
         retorno.setNome(resultado.getString("nome"));
         retorno.setCpf(resultado.getString("cpf"));
         retorno.setEndereco(resultado.getString("endereco"));
         retorno.setTelefone(resultado.getString("telefone"));
     }
     return retorno;
    

    }

    public ArrayList listar() throws SQLException {

    StringBuffer sql = new StringBuffer();
     sql.append("SELECT CodigoCliente , nome , cpf, endereco , telefone ");
     sql.append("FROM cliente ");
     sql.append("ORDER BY nome ASC");
    
     Connection conexao = ConexaoFactory.conectar();
    
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
     ResultSet resultado = comando.executeQuery();
    
     ArrayList<Cliente> lista = new ArrayList<Cliente>();
    
     while (resultado.next()) {
    
         Cliente c = new Cliente();
    
         c.setNome(resultado.getString("nome"));
         c.setCpf(resultado.getString("cpf"));
         c.setEndereco(resultado.getString("endereco"));
         c.setTelefone(resultado.getString("telefone"));
         c.setCodigoCliente(resultado.getLong("codigoCliente"));
    
         lista.add(c);
    
     }
    
     return lista;
    

    }

    public ArrayList buscarPorNome(Cliente c) throws SQLException {

    StringBuffer sql = new StringBuffer();
     sql.append("SELECT CodigoCliente , nome, cpf , endereco, telefone ");
     sql.append("FROM cliente ");
     sql.append("WHERE nome LIKE ?");
     sql.append("ORDER BY  nome ASC");
    
     Connection conexao = ConexaoFactory.conectar();
    
     PreparedStatement comando = conexao.prepareStatement(sql.toString());
     comando.setString(1, "%" + c.getNome() + "%");
     comando.setString(2, "%" + c.getCpf() + "%");
     comando.setString(3, "%" + c.getEndereco() + "%");
     comando.setString(4, c.getTelefone());
    
     ArrayList<Cliente> lista = new ArrayList<Cliente>();
     comando.setString(1, c.getNome());
     comando.setString(2, c.getCpf());
     comando.setString(3, c.getEndereco());
     comando.setString(4, c.getTelefone());
     ResultSet resultado = comando.executeQuery();
    
     while (resultado.next()) {
    
         Cliente item = new Cliente();
    
         item.setCodigoCliente(resultado.getLong("codico"));
    
         item.setNome(resultado.getString("nome"));
         item.setCpf(resultado.getString("cpf"));
         item.setEndereco(resultado.getString("endereco"));
         item.setTelefone(resultado.getString("telefone"));
         lista.add(item);
    
     }
    
     return lista;
    

    }

}

T

modelagem

Amigo pelo que entendi este é o modelo do teu banco de dados, e para salvar a denuncia tu estas precisando do id do cliente, antes de tudo é bom ter uma boa lógica pro teu banco, como não cadastrar duas vezes o CPF de um cliente. depois fica fácil. Cria uma query para verificar se o CPF do cliente já esta cadastrado, caso faça o cadastro dele, se já estiver cadastrado, tu só vais precisar de uma query para recuperar o id do cliente já cadastrado no sistema ou do novo cliente cadastrado.

Pessoalmente é assim que trabalho, isso ao meu vê da mais segurança ao meu banco de dados, sempre fazendo consultas antes de incluir, remover ou alterar qualquer coisa.

H

Sim com certeza, eu to fazendo teste sabe, por exemplo cadastrar o cliente e depois a denuncia, só que ele não cadastra a denuncia. aqui está o XHTM Cliente ui:define name=“menu”>
<ui:include src="/includes/menuSMA.xhtml" />
</ui:define>

<ui:define name="conteudo">
    <f:event listener="#{MBDenuncia.carregarListagem()}" 
             type="preRenderView"/>       

    <h:form id="frmDenListagem">

        <p:dataTable id="tblDenListagem" widgetVar="tabelaDenListagem"
                     value="#{MBDenuncia.itens}" var="item"
                     emptyMessage="Nem Registro Encontrado!!"

                     paginator="true" rows="8" 
                     filteredValue="#{MBDenuncia.itensFiltrados}">
            <f:facet name="header">

                <h:outputText value="Lista de Denuncias"/>
            </f:facet> 

            <p:column headerText="Códico" 
                      filterBy="#{item.codigoDenuncia}" sortBy="#{item.codigoDenuncia}">

                <h:outputText value="#{item.codigoDenuncia}"/>

            </p:column>

            <p:column headerText="Tipo de Denuncia"
                      filterBy="#{item.tip_Denuncia}" sortBy="#{item.tip_Denuncia}">

                <h:outputText value="#{item.tip_Denuncia}"/>

            </p:column>
            <p:column headerText="Endereço Denuncia" filterBy="#{item.ende_Denuncia}"
                      sortBy="#{item.ende_Denuncia}">

                <h:outputText value="#{item.ende_Denuncia}">



                </h:outputText>

            </p:column>

            <p:column headerText="Data Denuncia"  sortBy="#{item.dataDenuncia}"
                      filterBy="#{item.dataDenuncia}">

                <h:outputText value="#{item.dataDenuncia}"/>

            </p:column>

            <p:column headerText="Clientes" filterBy="#{item.cliente.nome}" 
                      sortBy="#{item.cliente.nome}">

                <h:outputText value="#{item.cliente.nome}"/>

            </p:column>

            <p:column headerText="Opções">

                <p:commandButton icon="ui-icon-trash"
                                 oncomplete="PF('dlgDenExcluir').show();"
                                 update=":frmDenExcluir:pnlDenExcluir">

                    <f:setPropertyActionListener target="#{MBDenuncia.denuncia}" value="#{item}" />

                </p:commandButton>

                <p:commandButton icon="ui-icon-pencil"
                                 actionListener="#{MBDenuncia.prepararEditar()}"
                                 oncomplete="PF('dlgDenEditar').show();"
                                 update=":msgGlobal :frmDenEditar:pnlDenEditar" >
                    <f:setPropertyActionListener target="#{MBDenuncia.denuncia}" value="#{item}">



                    </f:setPropertyActionListener>


                </p:commandButton>

            </p:column>

            <f:facet name="footer">

                <p:commandButton value="Novo" 
                                 oncomplete="PF('dlgDenNovo').show();"
                                 actionListener="#{MBDenuncia.prepararNovo()}"
                                 update=":frmDenNovo:pnlDenNovo :msgGlobal"/>

            </f:facet>

        </p:dataTable>
    </h:form>

    <p:dialog widgetVar="dlgDenNovo" closable="false" draggable="false" resizable="false"
              appendTo="@(body)"
              header="Denuncia- Nova">

        <h:form id="frmDenNovo">                
            <h:panelGrid id="pnlDenNovo" columns="2">                    
                <p:outputLabel for="txtDenTNovo" value="Tipo Denuncia"/>
                <p:inputText id="txtDenTNovo" value="#{MBDenuncia.denuncia.tip_Denuncia}" 
                             maxlength="50" size="30"
                             required="true"
                             requiredMessage="O campo Tipo De Denuncia  è Obrigatório "/>

                <p:outputLabel value="Foto Denuncia"/>
                <h:inputFile  value="#{MBDenuncia.denuncia.foto}"
                              />

                <p:outputLabel for="textEnNovo" value="Endereço Denuncia"/>
                <p:inputText id="textEnNovo" value="#{MBDenuncia.denuncia.ende_Denuncia}" 
                             size="10"
                             required="true"
                             requiredMessage="Endereço Denuncia é Obrigatorio"

                             />



                <p:outputLabel  value="Data Denuncia"/>

                <label>
                    <input type="date" value="#{MBDenuncia.denuncia.dataDenuncia}" />


                </label>

                <p:outputLabel for="CliNovo" value="Cliente"/>
                <p:selectOneMenu id="CliNovo" value="#{MBDenuncia.denuncia.cliente.codigoCliente}" 
                                 filter="true"
                                 required="true" requiredMessage="O campo Cliente é Obrigatório">
                    <f:selectItem itemValue="" itemLabel="Selecione um Cliente"/>

                    <f:selectItems value="#{MBDenuncia.comboClientes}"
                                   var="item"
                                   itemValue="#{item.codigoCliente}" itemLabel="#{item.nome}"/>



                </p:selectOneMenu>

            </h:panelGrid>   

            <h:panelGrid columns="2">

                <p:commandButton value="Gravar" actionListener= "#{MBDenuncia.novo()}" 
                                 update=":msgGlobal :frmDenListagem:tblDenListagem" 
                                 oncomplete="verificar(xhr, status, args,'dlgDenNovo', 'tabelaDenListagem');"/>

                <p:commandButton value="Cancelar" process="@this"
                                 oncomplete="PF('dlgDenNovo').hide();">
                    <p:resetInput target="pnlDenNovo"/>             
                </p:commandButton>



            </h:panelGrid>



        </h:form>

    </p:dialog> 

    <p:dialog widgetVar="dlgDenExcluir"
              draggable="false"
              closable="false" resizable="false"
              header=" Produto- Excluir">

        <h:form id="frmDenExcluir">                
            <h:panelGrid  id="pnlDenExcluir" columns="2">                    
                <p:outputLabel value="Códico"/>
                <h:outputText value="#{MBDenuncia.denuncia.codigoDenuncia}"/>

                <p:outputLabel value="Tipo Denuncia"/>
                <h:outputText value="#{MBDenuncia.denuncia.tip_Denuncia}"/>

                <p:outputLabel value="Data Denuncia"/>
                <h:outputText value="#{MBDenuncia.denuncia.dataDenuncia}">
                    <f:convertNumber />

                </h:outputText>

                <p:outputLabel value="Endereço Denuncia"/>

                <h:outputText value="#{MBDenuncia.denuncia.ende_Denuncia}"/>

                <p:outputLabel value="Cliente"/>                    
                <h:outputText value="#{MBDenuncia.denuncia.cliente.nome}"/>                

            </h:panelGrid>

            <p:panelGrid columns="2"> 

                <p:commandButton value="Excluir"
                                 actionListener="#{MBDenuncia.excluir()}"
                                 update=":msgGlobal :frmDenListagem:tblDenListagem"
                                 oncomplete="PF('dlgDenExcluir').hide(); tabelaDenListagem.clearFilters();"/>

                <p:commandButton value="Cancelar" 
                                 oncomplete="PF('dlgDenExcluir').hide();"/>
            </p:panelGrid>

        </h:form> 
    </p:dialog>         

    <p:dialog widgetVar="dlgDenEditar"
              closable="false"
              draggable="false"
              resizable="false" 
              header=" Denuncia Editada">

        <h:form id="frmDenEditar">

            <p:panelGrid id="pnlDenEditar" columns="2">

                <p:outputLabel value="Códico"/>
                <h:outputText value="#{MBDenuncia.denuncia.codigoDenuncia}"/>

                <p:outputLabel value="Descrição Denuncia"/>
                <h:inputText value="#{MBDenuncia.denuncia.ende_Denuncia}" 
                             maxlength="50" size="30"/>
                <p:outputLabel value="Endereço Denuncia"/>

                <h:inputText value="#{MBDenuncia.denuncia.ende_Denuncia}">
                    />

                </h:inputText>


                <p:outputLabel value="Cliente"/>

                <p:selectOneMenu value="#{MBDenuncia.denuncia.cliente}"
                                 filter="true">
                    <f:selectItem itemValue=""  itemLabel="Selecione um Cliente "/>
                    <f:selectItems  value="#{MBDenuncia.comboClientes}" var="item" itemValue="#{item.codigoCliente}" itemLabel="#{item.nome}"/>

                </p:selectOneMenu>



            </p:panelGrid> 



            <h:panelGrid columns="2">

                <p:commandButton value="Editar" actionListener="#{MBDenuncia.editar()}"
                                 update=":msgGlobal :frmDenListagem:tblDenListagem"
                                 oncomplete="verificar(xhr, status, args,'dlgDenEditar', 'tabelaDenListagem')"/>


                <p:commandButton value="Cancelar" process="@this"
                                 oncomplete="PF('dlgDenEditar').hide();">
                    <p:resetInput target="pnlDenEditar" />

                </p:commandButton>
            </h:panelGrid>

        </h:form>


    </p:dialog>

</ui:define>

</ui:composition>

e aqui o XHTML denuncia
ui:define name=“menu”>
<ui:include src="/includes/menuSMA.xhtml"/>
</ui:define>
<ui:define name=“conteudo”>
<h:form id=“frmCliListagem”>

<p:dataTable  id="tblClientes" widgetVar="tabelaCliente" 
                      emptyMessage="Nenhum Reegistro Encotrado!!"

                      value="#{MBCliente.itens}" 
                      var="item"
                      filteredValue="#{MBCliente.intensFiltrados}"
                      paginator="true"
                      rows="10">

            <f:facet name="header">                
                Clientes Cadastrados

            </f:facet>

            <p:column headerText="Código" sortBy="#{item.codigoCliente}"
                      filterBy="#{item.codigoCliente}">

                <h:outputText value="#{item.codigoCliente}" />
            </p:column>
            <p:column headerText="Nome" sortBy="#{item.nome}"
                      filterBy="#{item.nome}">
                <h:outputText value="#{item.nome}" />
            </p:column>


            <p:column headerText="Cpf" sortBy="#{item.cpf}"
                      filterBy="#{item.cpf}">
                <h:outputText value="#{item.cpf}" />
            </p:column>

            <p:column headerText="Endereco" sortBy="#{item.endereco}"
                      filterBy="#{item.endereco}">
                <h:outputText value="#{item.endereco}" />

            </p:column>

            <p:column headerText="Telefone" sortBy="#{item.telefone}"
                      filterBy="#{item.telefone}">
                <h:outputText value="#{item.telefone}" />

            </p:column>

            <p:column headerText="Opções">                   
                <p:commandButton icon="ui-icon-trash" 
                                 oncomplete="PF('dlgCliExcluir').show();"                                     
                                 update=":frmCliExcluir:pnlCliExcluir">
                    <f:setPropertyActionListener 
                        target="#{MBCliente.cliente}" value="#{item}"/>

                </p:commandButton>

                <p:commandButton icon="ui-icon-pencil" oncomplete="PF('dlgCliEditar').show();"
                                 update=":frmCliEditar:pnlCliEditar">

                    <f:setPropertyActionListener target="#{MBCliente.cliente}" value="#{item}"/>
                </p:commandButton>
            </p:column>

            <f:facet name="footer">

                <p:commandButton value="Novo Cadastro"
                                 actionListener="#{MBCliente.prepararNovo}" 
                                 oncomplete ="PF('dlgCliNovo').show();"
                                 update=":frmCliNovo:pnlCliNovo"/>




            </f:facet>
        </p:dataTable>
    </h:form>        
    <p:dialog widgetVar="dlgCliNovo"
              closable="false"
              draggable="false"
              resizable="false"
              modal="true" appendTo="@(body)"
              header="Cliente - Novo">

        <h:form id="frmCliNovo">                
            <h:panelGrid  id="pnlCliNovo" columns="2">

                <p:outputLabel for="txtNomCliNovo" value="Nome:"/>
                <p:inputText  id="txtNomCliNovo" size="30" maxlength="50" 
                              value="#{MBCliente.cliente.nome}"
                              required="true"
                              requiredMessage="Campo Nome é Obrigatório!"/>

                <p:outputLabel for="txtCpfCliNovo" value="Cpf:"/>
                <p:inputText  id="txtCpfCliNovo" size="30" maxlength="50" 
                              value="#{MBCliente.cliente.cpf}"
                              required="true"
                              requiredMessage="Campo Cpf é Obrigatório!"/>

                <p:outputLabel for="txtEndCliNovo" value="Endereço:"/>
                <p:inputText  id="txtEndCliNovo" size="30" maxlength="50" 
                              value="#{MBCliente.cliente.endereco}"
                              required="true"
                              requiredMessage="Campo Endereço é Obrigatório!"/>

                <p:outputLabel for="txtTelCliNovo" value="Telefone:"/>
                <p:inputText  id="txtTelCliNovo" size="30" maxlength="50" 

                              value="#{MBCliente.cliente.telefone}"
                              required="true"
                              requiredMessage="Telefone é Obrigatório!"/>


            </h:panelGrid>  

            <p:panelGrid columns="2">
                <p:commandButton value="Salvar" actionListener="#{MBCliente.novo}"
                                 oncomplete="verificar(xhr, status, args, 'dlgCliNovo', 'tabelaCliente');"
                                 update=":frmCliListagem:tblClientes :msgGlobal"/>
                <p:commandButton value="Cancelar" process="@this"
                                 onclick="PF('dlgCliNovo').hide();">

                    <p:resetInput target="pnlCliNovo" />
                </p:commandButton>                    
            </p:panelGrid>

        </h:form>
    </p:dialog>

    <p:dialog widgetVar="dlgCliExcluir" 
              closable="false"
              draggable="false"
              resizable="false"
              modal="true" 
              appendTo="@(body)"
              header=" Excluir Cliente"> 

        <h:form id="frmCliExcluir">                
            <h:panelGrid id="pnlCliExcluir" columns ="2" >                    
                <h:outputText value="Códico"/>                    
                <h:outputText  value="#{MBCliente.cliente.codigoCliente}"/>

                <h:outputText value="Nome:"/>
                <h:outputText value="#{MBCliente.cliente.nome}"/>
                <h:outputText value="Endereço:"/>
                <h:outputText value="#{MBCliente.cliente.endereco}"/>
                <h:outputText value="Cpf:"/>
                <h:outputText value="#{MBCliente.cliente.cpf}"/>
                <h:outputText value="Telefone:"/>
                <h:outputText value="#{MBCliente.cliente.telefone}"/>

            </h:panelGrid>


            <h:panelGrid columns="2">
                <p:commandButton value="Excluir" actionListener="#{MBCliente.excluir()}"
                                 oncomplete="PF('dlgCliExcluir').hide(); tabelaCliente.clearFilters();"
                                 update=":frmCliListagem:tblClientes :msgGlobal"/>
                <p:commandButton value="Cancelar" onclick="PF('dlgCliExcluir').hide();"/>




            </h:panelGrid>
        </h:form>
    </p:dialog>

    <p:dialog widgetVar="dlgCliEditar"
              draggable="false"
              resizable="false"                          
              closable="false"
              modal="true"
              appendTo ="@(body)"

              header=" Editar Cliente"> 

        <h:form id="frmCliEditar">

            <p:panelGrid id="pnlCliEditar" columns="2">                            
                <h:outputText value="Códico"/>
                <h:outputText value="#{MBCliente.cliente.codigoCliente}"
                              />

                <h:outputLabel for="txtNomProdEditar" value="Nome"/>
                <p:inputText  id="txtNomProdEditar" value="#{MBCliente.cliente.nome} " 
                              size="30" maxlength="50"
                              required="true"
                              />


                <h:outputLabel for="txtEndeProdEditar" value="Endereço"/>
                <p:inputText  id="txtEndeProdEditar" value="#{MBCliente.cliente.endereco} " 
                              size="30" maxlength="50"
                              required="true"/>
                <h:outputLabel for="txtTelProdEditar" value="Nome"/>
                <p:inputText  id="txtTelProdEditar" value="#{MBCliente.cliente.telefone} " 
                              size="30" maxlength="50"
                              required="true"/>
                <h:outputLabel for="txtCpfProdEditar" value="Cpf"/>
                <p:inputText  id="txtCpfProdEditar" value="#{MBCliente.cliente.cpf} " 
                              size="30" maxlength="50"/>
            </p:panelGrid>                        
            <p:panelGrid columns="2">
                <p:commandButton value="Ok"
                                 actionListener="#{MBCliente.editar}"                                              
                                 oncomplete="verificar(xhr, status, args,'dlgCliEditar', 'tabelaCliente');"
                                 update=":frmCliListagem:tblClientes :msgGlobal"/>                          
                <p:commandButton value="Cancelar" process="@this"
                                 onclick="PF('dlgCliEditar').hide();">
                    <p:resetInput target="pnlCliEditar" />             

                </p:commandButton>

            </p:panelGrid>

        </h:form>            






    </p:dialog>
</ui:define>

</ui:composition>

não sei se la no banco ta o erro ou na html

T

Bem, como tu disseste, teu método cadastra a o cliente, mas não a denuncia, vamos começar por ai, mostra teu código INSERT INTO denuncias, e vamos analisar o código.

Nos POSTS acima você só postou o INSERT INTO clientes.

H

public class DenunciaDAO {

public void salvar(Denuncia d) throws SQLException {

    StringBuilder sql = new StringBuilder();
    sql.append(" INSERT INTO denuncia ");
    sql.append(" SELECT CPF from denuncia where CPF = Cpf");
    sql.append("(Tip_Denuncia, Ende_Denuncia, foto, DataDenuncia , CodigoCliente )");
    sql.append("VALUES (?, ?, ?, ? , ? ) ");

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    comando.setString(1, d.getTip_Denuncia());
    comando.setString(2, d.getEnde_Denuncia());
    comando.setBlob(3, d.getFoto());
    comando.setDate(4, d.getDataDenuncia());
    comando.setLong(5, d.getCliente().getCodigoCliente());

    comando.executeUpdate();

}
T

Acho que já sei qual é o problema, vamos fazer assim:

1° Cria um método que pesquisa e retorna o ID do usuário, pelo CPF.
SELECT id FROM cliente WHERE cpf = ‘[CPF removido]’;

2° No teu método INSERT INTO denuncia tu tens que informa o ID do CLIENTE que esta fazendo a denuncia. Partindo dai tu tens recuperar o retorno do método criado acima no item .

3° Lembra que a chave estrangeira não pode ficar vazia, logo é mais que necessário você informe ela pro método INSERT INTO denuncias para todas as informações serem incluídas juntas, no teu caso ela é simplesmente o ID do CLIENTE que fez a denuncia.

4° Ao que tudo indica esse é o erro que tu estas cometendo, pois tu não estás informando a chave estrangeira e ela não é carregada sozinha.

H

Bha tu estas me ajudando muito, só mas uma duvidas eu crio esses dois metodos na denuncia ne?

T

Sim! Na verdade depende, tu podes criar os métodos na tua classe que contem todo o teu CRUD e depois cria um objeto na hora da ação quando a denuncia for enviada, você chamar os métodos pelo objeto para validar tudo e executar a inclusão no banco.

O importante é que os dois métodos trabalhem juntos no momento da ação quando o usuário clicar para enviar a denuncia, porque a partir dai tu podes retornar mensagens de erro, como por exemplo: O CPF é inválido, usuário não cadastrado. etc… depois de validar tudo, tu podes incluir no banco a denuncia.

H

seria isso?
public ArrayList pesquisa() throws SQLException {

StringBuffer sql = new StringBuffer();
    sql.append("SELECT CodigoCliente ");
    sql.append("FROM cliente WHERE cpf = ‘[CPF removido]’; ");
    

    Connection conexao = ConexaoFactory.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    ResultSet resultado = comando.executeQuery(); 
       return pesquisa() ;
T

Sim, primeiro recupera o ID, depois faz o cadastro no banco. Eu fiz um exemplo bem explicado.

1° CONEXÃO

package connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.sql.Connection;

import java.sql.ResultSet;

import java.util.logging.Level;

import java.util.logging.Logger;

public class ConnectionFactory {

private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/mydb";
private static final String USER = "root";
private static final String PASS = "";

public static Connection getConnection() {
    try {
        Class.forName(DRIVER);
        return (Connection) DriverManager.getConnection(URL, USER, PASS);
    } catch (ClassNotFoundException | SQLException ex) {
        throw new RuntimeException("Erro na conexão: ", ex);
    }
}

public static void closseConnection(Connection con) {
    try {
        if (con != null) {
            con.close();
        }
    } catch (SQLException ex) {
        Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public static void closseConnection(Connection con, PreparedStatement pst) {
    closseConnection(con);
    try {
        if (pst != null) {
            pst.close();
        }
    } catch (SQLException ex) {
        Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public static void closseConnection(Connection con, PreparedStatement pst, ResultSet rs) {
    closseConnection(con, pst);
    
    try {
        if (rs != null) {
            rs.close();
        }
    } catch (SQLException ex) {
        Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

2° ATRIBUTOS

package model.bean;

public class Atributos {

private int id;
private String nome;
private String endereco;
private String telefone;
private String decricao;
private String foto;
private String cpf;
private String tio;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getEndereco() {
    return endereco;
}

public void setEndereco(String endereco) {
    this.endereco = endereco;
}

public String getTelefone() {
    return telefone;
}

public void setTelefone(String telefone) {
    this.telefone = telefone;
}

public String getDecricao() {
    return decricao;
}

public void setDecricao(String decricao) {
    this.decricao = decricao;
}

public String getFoto() {
    return foto;
}

public void setFoto(String foto) {
    this.foto = foto;
}

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public String getTio() {
    return tio;
}

public void setTio(String tio) {
    this.tio = tio;
}

}

3° METODOS

package model.dao;

import connection.ConnectionFactory;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import model.bean.Atributos;

public class AtributosDAO {

public void createDenuncia(Atributos at) {
    Connection con = ConnectionFactory.getConnection();
    PreparedStatement pst = null;

    try {
        pst = con.prepareStatement("INSERT INTO denuncia (cliente_id, decricaoD, endeD, fotoD) VALUES (?, ?, ?, ?)");
        pst.setInt(1, at.getId());
        pst.setString(2, at.getDecricao());
        pst.setString(3, at.getEndereco());
        pst.setString(4, at.getFoto());
        pst.executeUpdate();
        JOptionPane.showMessageDialog(null, "Denuncia salva com sucesso!", "Aviso", 1);
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Error ao salvar denuncia: " + ex, "Aviso", 0);
    } finally {
        ConnectionFactory.closseConnection(con, pst);
    }
}

public List<Atributos> readID(String cpf) {
    Connection con = ConnectionFactory.getConnection();
    PreparedStatement pst = null;
    ResultSet rs = null;
    List<Atributos> atributos = new ArrayList<>();

    try {
        pst = con.prepareStatement("SELECT id FROM cliente WHERE cpf = ?");
        pst.setString(1, cpf);
        rs = pst.executeQuery();
        while (rs.next()) {
            Atributos atb = new Atributos();
            atb.setId(rs.getInt("id"));
            atributos.add(atb);
        }
    } catch (SQLException ex) {
        Logger.getLogger(AtributosDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        ConnectionFactory.closseConnection(con, pst, rs);
    }
    return atributos;
}

}

4° HORA DO SHOW

import javax.swing.JOptionPane;

import model.bean.Atributos;

import model.dao.AtributosDAO;

public class Principal {

public static void main(String[] args) {

    AtributosDAO atDAO = new AtributosDAO();
    Atributos atributos = new Atributos();

    String cpf = "[CPF removido]"; //CPF da pessoa que esta fazendo a denuncia
    String decricao = "Os politicos sao corruptos."; //Decricao que a pessoa forneceu.
    String endereco = "Av. fulano de tal, n° 200."; //Endereço da pessoa que esta fazendo a denuncia
    String foto = "1b0cb3c696ae03c65e0d5ccad1fe5742.jpg"; //Foto da pessoa que esta fazendo a denuncia
    int id = 0;

    for (Atributos at : atDAO.readID(cpf)) {
        id = at.getId();
    }

    if (id != 0) {
        
        //Setando informações a serem mandadas ao banco.
        atributos.setId(id);
        atributos.setDecricao(decricao);
        atributos.setEndereco(endereco);
        atributos.setFoto(foto);
        
        atDAO.createDenuncia(atributos); //Cadastrando denuncia no banco.

    } else {
        JOptionPane.showMessageDialog(null, "Usuário não cadastrado!");
    }

}

}

T

Velho, vou te dar um método que valida CPF, dai você usa no teu código para não mandar qualquer consulta pro teu banco.

/**
* Método valida um CPF por completo com todas as proteções possíveis.
*
* @param cpf String do CPF que deve ser tratado.
* @return boolean caso o cpf passe ou não pela analise.
*/

public static boolean validadorCPF(String cpf) {
    String cpfAnalise = cpf.replaceAll("[^0-9]", ""); //REMOVE PONTOS E TRAÇOS
    String[] array = new String[1];
    array = cpf.split("-");
    array[0] = array[0].replace(".", "");
    char arrayCharUm[] = array[0].toCharArray();
    int digGeradoUm = 0;
    int digGeradoDois = 0;
    
    if (cpfAnalise.length() != 11) {return false;} //VERIFICA O TAMANHO DA STRING
    if (cpfAnalise.matches("(\\d)\\1{10}")) {return false;} //VERIFICA SE NAO TEM VALORES REPETIDOS COMO EX: [CPF removido]
    
    //CALCULANDO PRIMEIRO DIGITO
    for (int sobe = 0, desce = 10; sobe <= arrayCharUm.length && desce >= 2; sobe++, desce--) {
        digGeradoUm += (arrayCharUm[sobe] - 48) * desce;
    }
    digGeradoUm = 11 - (digGeradoUm % 11);
    String strFirstDig = Integer.toString(digGeradoUm);
    String novaString = new String(arrayCharUm);
    novaString = novaString + strFirstDig;
    
    //CALCULANDO SEGUNDO DIGITO
    char arrayCharDois[] = novaString.toCharArray();
    for (int sobe = 0, desce = 11; sobe <= arrayCharDois.length && desce >= 2; sobe++, desce--) {
        digGeradoDois += (arrayCharDois[sobe] - 48) * desce;
    }
    digGeradoDois = 11 - (digGeradoDois % 11);
    String strSecundDig = Integer.toString(digGeradoDois);
   

    return array[1].equals(strFirstDig + strSecundDig);
}
Criado 27 de dezembro de 2017
Ultima resposta 28 de dez. de 2017
Respostas 13
Participantes 3