Ir ao conteúdo
  • Cadastre-se

Leonardo Lovato

Membro Pleno
  • Posts

    20
  • Cadastrado em

  • Última visita

posts postados por Leonardo Lovato

  1. Boa noite à todos.


    Galera, estou com dois problemas referente as datas no meu sistema
    Tenho uma tabela que me traz um produto com suas respectivas datas de compra/vencimento.

     

    Problema numero 1 -> Está acontecendo algo difícil de entender, eu cadastro a data de compra agora (30/05/2018) e coloco a data de vencimento para dia 10/06/2018, porém tem produtos que ele cadastra como um dia antes, e tem produtos que ele cadastra como um dia depois, por exemplo:

     

    NO SISTEMA:

    1.JPG.0587f0e9699ed21d52609d8bd38a9b78.JPG
    Obs.:   No sistema eu cadastrei o produto "coco" como: "COMPRA: 30/05/2018" e "VALIDADE 10/06/2018", perceba que ele retrocedeu um dia em ambas as datas. 
    O produto coca cola está correto, eu cadastrei exatamente as datas apresentadas.


    NO BANCO DE DADOS:
    2.JPG.22dc2e4a124fdf1dcc97119da6c23e21.JPG
    Obs.:   No banco de dados já aparece diferente, o produto "coco" está correto, foi essa data mesmo que inseri (_porem perceba que la em cima na tela do sistema ele me mostrou diferente_). 
    O produto coca cola está incorreto, pois a data correta que eu cadastrei no sistema foi "COMPRA: 30/05/2018" e "VALIDADE: 10/06/2018".

    Estou utilizando uma Table Model.

     

    Resumindo ->  Alguns produtos estão certo no sistema e errado no banco e vise versa, desculpe a confusão, mas tentei explicar da melhor forma.

     

    "Problema" numero 2 -> Como faço para ser exibido a data no padrão br ? ( ## - ## - #### ).

     

     

    Abaixo está o meu código dos métodos ( métodos `adicionar()` , `pesquisar_produtos()` e `setar_campos()` ):
       

      private void adicionar() {
    
            if ((txtProProduto.getText().isEmpty())
                    || (txtProPreco.getText().isEmpty()) || (txtProQuantidade.getText().isEmpty())
                    || (jDatProCompra.getDate() == null || (jDatProVencimento.getDate() == null))) {
                JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatórios.");
            } else {
                String sql = "insert into tbprodutos(produto,preco,quantidade,categoria,compra,validade) values(?,?,?,?,?,?)";
                try {
                    pst = connection.prepareStatement(sql);
                    pst.setString(1, txtProProduto.getText());
                    pst.setString(2, txtProPreco.getValue().toString());
                    pst.setString(3, txtProQuantidade.getText());
                    pst.setString(4, cboProCategoria.getSelectedItem().toString());
                    pst.setDate(5, new java.sql.Date(jDatProCompra.getDate().getTime()));
                    pst.setDate(6, new java.sql.Date(jDatProVencimento.getDate().getTime()));
    
                    int adicionado = pst.executeUpdate();
                    if (adicionado > 0) {
                        JOptionPane.showMessageDialog(null, "Produto cadastrado com sucesso.");
                        txtProProduto.setText(null);
                        txtProPreco.setText(null);
                        txtProQuantidade.setText(null);
                        cboProCategoria.setSelectedItem(null);
                        jDatProCompra.setDate(null);
                        jDatProVencimento.setDate(null);
                    }
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);
                }
    
            }
        }
    
        private void pesquisar_produto() {
            String sql = "select produto,preco,quantidade,categoria,compra,validade from tbprodutos where produto like ?";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(1, txtProPesquisar.getText() + "%");
                rs = pst.executeQuery();
                tblProdutos.setModel(DbUtils.resultSetToTableModel(rs));
    
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
            }
        }
        public void setar_campos() {
            
            int setar = tblProdutos.getSelectedRow();
            txtProProduto.setText(tblProdutos.getModel().getValueAt(setar, 0).toString());
            txtProPreco.setText(tblProdutos.getModel().getValueAt(setar, 1).toString());
            txtProQuantidade.setText(tblProdutos.getModel().getValueAt(setar, 2).toString());
            cboProCategoria.setSelectedItem(tblProdutos.getModel().getValueAt(setar, 3).toString());
            jDatProCompra.setDate((java.sql.Date) tblProdutos.getModel().getValueAt(setar, 4));
            jDatProVencimento.setDate((java.sql.Date) tblProdutos.getModel().getValueAt(setar, 5));
        }

    Obrigado à todos!

  2. 8 horas atrás, gustavodbg disse:

    Poderia por gentileza, compartilhar a solução do problema, de forma a ajudar futuros usuários que enfrentem problema semelhante e venham a encontrar o seu tópico? Obrigado :)

    Claro! Desculpe o egoísmo! rs.

     

    Foi um erro besta, perceba que eu seto a data no mesmo jDate (que se chama jDatProCompra), ou seja, logicamente a data ia ficar a mesma nos dois campos.

    Eu só troquei o nome de jDatProCompra para jDatProVencimento (que é o nome da minha outra jDate). 

    • Obrigado 1
  3. Saudações galera.

    Gostaria de tirar uma duvida com vocês...
    Estou utilizando o jDateChooser para pegar uma data e inserir no banco MySQL.

    O problema é que a aplicação não está respeitando a data que coloco, está inserindo a data atual do sistema.
    Por exemplo, se eu coloco 05/06/2018, quando salvo e dou um select no banco percebo que foi salvo a data atual do meu sistema. Por que acontece isso?

    Abaixo está o código que pego a data:
     

                    pst.setDate(5, new java.sql.Date(jDatProCompra.getDate().getTime()));
                    pst.setDate(6, new java.sql.Date(jDatProCompra.getDate().getTime()));

     

    Obrigado a todos!

    ----------------------

    Achei o problema, pode fechar

  4. Mano, fiz dessa forma que voce disse, mas ele não está apresentando a minha mensagem, ele lança a exception no banco como chave duplicada (normal), mas o meu JOptionPane.showMessageDialog() ele não apresenta, devo estar fazendo muita **********! :oops:

     

        private void adicionar() {
    
            if ((txtUsuId.getText().isEmpty()) || (txtUsuNome.getText().isEmpty())
                    || (txtUsuLogin.getText().isEmpty()) || (txtUsuSenha.getText().isEmpty())
                    || (cboUsuPerfil.getSelectedIndex() == 0)) {
                JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatórios.");
            } else {
                if (verificarLogin()) {
    
                    String sql = "insert into tbusuarios(iduser,usuario,login,senha,telefone,perfil,sexo) values(?,?,?,?,?,?,?)";
                    try {
                        pst = connection.prepareStatement(sql);
                        pst.setString(1, txtUsuId.getText());
                        pst.setString(2, txtUsuNome.getText());
                        pst.setString(3, txtUsuLogin.getText());
                        pst.setString(4, txtUsuSenha.getText());
                        pst.setString(5, txtUsuFone.getText());
                        pst.setString(6, cboUsuPerfil.getSelectedItem().toString());
                        pst.setString(7, cboUsuSexo.getSelectedItem().toString());
    
                        // confirmar a inserção dos dados na tabela
                        int adicionado = pst.executeUpdate();
                        if (adicionado > 0) {
                            JOptionPane.showMessageDialog(null, "Usuário cadastrado com sucesso.");
                            txtUsuId.setText(null);
                            txtUsuNome.setText(null);
                            txtUsuFone.setText(null);
                            txtUsuLogin.setText(null);
                            txtUsuSenha.setText(null);
                            cboUsuSexo.setSelectedItem(null);
                            cboUsuPerfil.setSelectedItem(null);
    
                        }
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e);
                    }
                }
            }
        }

     

  5. @Leonardo0308 Que isso mano! Você está ajudando demais, e com extrema clareza, até esta utilizando meu código :lol:

    Eu que estou bem "cru" kkkkkk
    Enfim mano, eu fiz isso mesmo que você disse, mas chamar somente o método verificarLogin() dentro do if já é o suficiente ?

    Porque quando clico no botão pra adicionar ele não faz nada :huh:, parece que ele ta entrando no if e não está fazendo nada ...

     private void adicionar() {
            String sql = "insert into tbusuarios(iduser,usuario,login,senha,telefone,perfil,sexo) values(?,?,?,?,?,?,?)";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(1, txtUsuId.getText());
                pst.setString(2, txtUsuNome.getText());
                pst.setString(3, txtUsuLogin.getText());
                pst.setString(4, txtUsuSenha.getText());
                pst.setString(5, txtUsuFone.getText());
                pst.setString(6, cboUsuPerfil.getSelectedItem().toString());
                pst.setString(7, cboUsuSexo.getSelectedItem().toString());
            
                if ((txtUsuId.getText().isEmpty()) || (txtUsuNome.getText().isEmpty()) || 
                   (txtUsuLogin.getText().isEmpty()) || (txtUsuSenha.getText().isEmpty()) || 
                   (cboUsuPerfil.getSelectedIndex() == 0)) {
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatórios.");
                 }           
                else if (verificarLogin()){
               
                } else{
                    // confirmar a inserção dos dados na tabela
                    int adicionado = pst.executeUpdate();
                    if (adicionado > 0) {
                        JOptionPane.showMessageDialog(null, "Usuário cadastrado com sucesso.");
                        txtUsuId.setText(null);
                        txtUsuNome.setText(null);
                        txtUsuFone.setText(null);
                        txtUsuLogin.setText(null);
                        txtUsuSenha.setText(null);
                        cboUsuSexo.setSelectedItem(null);
                        cboUsuPerfil.setSelectedItem(null);
                    }
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
            }
        }

    Cara, mais uma vez desculpe ficar sendo incomodo, chato, kkkkk ... Mas estou aprendendo! Valeu de coração!!! 

    • Curtir 1
  6. Cara, muito obrigado pela atenção, de verdade!
    Eu crio o método verificarLogin() :

     private void verificarLogin(){
            String sql = "select usuario from tbusuarios where usuario = ?";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(1, txtUsuLogin.getText());
                rs = pst.executeQuery();
                if(rs.next() == true){
                    JOptionPane.showMessageDialog(null, "Login já cadastrado.");
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, e);
            }
        }

    Estou chamando ele no método adicionar(), ou seja, quando tento adicionar (cadastrar) um login, certo ? Estou chamando o método de verificarLogin() no else, olhe: 

     

    private void adicionar() {
            String sql = "insert into tbusuarios(iduser,usuario,login,senha,telefone,perfil,sexo) values(?,?,?,?,?,?,?)";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(1, txtUsuId.getText());
                pst.setString(2, txtUsuNome.getText());
                pst.setString(3, txtUsuLogin.getText());
                pst.setString(4, txtUsuSenha.getText());
                pst.setString(5, txtUsuFone.getText());
                pst.setString(6, cboUsuPerfil.getSelectedItem().toString());
                pst.setString(7, cboUsuSexo.getSelectedItem().toString());
            
                if ((txtUsuId.getText().isEmpty()) || (txtUsuNome.getText().isEmpty()) || 
                   (txtUsuLogin.getText().isEmpty()) || (txtUsuSenha.getText().isEmpty()) || 
                   (cboUsuPerfil.getSelectedIndex() == 0)) {
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatórios.");
    
                 }           
                else {
                                    verificarLogin();
                    // confirmar a inserção dos dados na tabela
                    int adicionado = pst.executeUpdate();
                    if (adicionado > 0) {
                        JOptionPane.showMessageDialog(null, "Usuário cadastrado com sucesso.");
                        txtUsuId.setText(null);
                        txtUsuNome.setText(null);
                        txtUsuFone.setText(null);
                        txtUsuLogin.setText(null);
                        txtUsuSenha.setText(null);
                        cboUsuSexo.setSelectedItem(null);
                        cboUsuPerfil.setSelectedItem(null);
                    }
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
            }
        }

    porém, quando eu tento cadastrar duas pessoas com o mesmo login, o programa re retorna a seguinte exception:
    "java.sql.SQLException: Can not executeUpdate() or executeLargeUpdate() for SELECTs"
    Estou chamado ele no lugar errado ? Se eu chamo dentro do if ele nem valida.. :rezando:
    Desculpe novamente, e obrigado pela atenção xará! :D

  7. @Leonardo0308 Obrigado pela luz, xará!

    Seria mais ou menos assim ?

    private void verificarLogin(){
            String sql = "select usuario from tbusuarios";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(2, txtUsuLogin.getText());
                rs = pst.executeQuery();
                if(rs.next() == true){
                    JOptionPane.showMessageDialog(null, "Login já cadastrado.");
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, e);
            }
        }

    Desculpe a ignorância, estou aprendendo, rs...

  8. Bom dia galera!

    Sou iniciante em programação (mais especificamente na linguagem Java) e estou fazendo um sistema de armazenamento para aprendizado.
    Eu tenho uma tela de cadastro de usuários e gostaria de saber como eu valido dois logins iguais, ou seja, se alguém tentar cadastrar um login que já possui no banco, quero que exiba uma mensagem "Login já cadastrado". Provavelmente terei que criar um método só pra isso, certo ? 
    Postarei o código do método adicionar, que adiciona um usuário no banco.
     

    private void adicionar() {
            String sql = "insert into tbusuarios(iduser,usuario,login,senha,telefone,perfil,sexo) values(?,?,?,?,?,?,?)";
            try {
                pst = connection.prepareStatement(sql);
                pst.setString(1, txtUsuId.getText());
                pst.setString(2, txtUsuNome.getText());
                pst.setString(3, txtUsuLogin.getText());
                pst.setString(4, txtUsuSenha.getText());
                pst.setString(5, txtUsuFone.getText());
                pst.setString(6, cboUsuPerfil.getSelectedItem().toString());
                pst.setString(7, cboUsuSexo.getSelectedItem().toString());
            
                if ((txtUsuId.getText().isEmpty()) || (txtUsuNome.getText().isEmpty()) || 
                   (txtUsuLogin.getText().isEmpty()) || (txtUsuSenha.getText().isEmpty()) || 
                   (cboUsuPerfil.getSelectedIndex() == 0)) {
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos obrigatórios.");
                
                 } else {
    
                    // confirmar a inserção dos dados na tabela
                    int adicionado = pst.executeUpdate();
                    if (adicionado > 0) {
                        JOptionPane.showMessageDialog(null, "Usuário cadastrado com sucesso.");
                        txtUsuId.setText(null);
                        txtUsuNome.setText(null);
                        txtUsuFone.setText(null);
                        txtUsuLogin.setText(null);
                        txtUsuSenha.setText(null);
                        cboUsuSexo.setSelectedItem(null);
                        cboUsuPerfil.setSelectedItem(null);
                    }
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
            }
        }

    Obrigado!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...