Galera sou iniciante, gostaria de tirar uma dúvida, o pq do meu codigo está setando o mesmo nome idade e sexo para todas as linhas e colunas do meu bda, e como resolver essa bronca!?

4 respostas
A
try {
                  Class.forName("com.mysql.jdbc.Driver");
                //criando uma variavel
                   Connection conn;
                   conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/novobanco?autoReconnect=true&useSSL=false", "root", "");
                   // CRIANDO STRING PAA RECEBER NO BANCO
                   String query;
                   PreparedStatement stmt;
                   if(jTextField1.getText().equals(""))
                   {
                    //CRIA STRING PARA RECEBER NO BANCO
                    query = "INSERT INTO funcionario (nome,sexo,idade) VALUES(?,?,?)";   
                    //CRIA O COMANDO
                   stmt = conn.prepareStatement(query);
                   //seta valores na string de inserçã
                   stmt.setString(1,jTextField1.getText());
                   stmt.setString(2,jTextField2.getText());
                   stmt.setString(3,jTextField3.getText());
                   }else{
                    //CRIA STRING PARA RECEBER NO BANCO
                   query = "UPDATE funcionario SET nome=?, sexo=?, idade=? ";
                   }
                   //CRIA O COMANDO
                    stmt = conn.prepareStatement(query);
                   //seta valores na string de inserçã
                   stmt.setString(1,jTextField1.getText());
                   stmt.setString(2,jTextField2.getText());
                   stmt.setString(3,jTextField3.getText());

                      
                   


                   //executa o comando no banco de dados
                   stmt.executeUpdate();
                   
                   //fecha comando e conexão
                   stmt.close();
                   conn.close();
                   
                   
                   
               } catch (ClassNotFoundException ex) {
                System.out.println("nao foi possivel encontrar a classe");
              } catch (SQLException e) {
               System.out.println("ocorreu um erro de sql:" + e);
        
        }
    }

4 Respostas

Jonathan_Medeiros

Seu código de UPDATE não está informando qual registro ele deve atualizar, por este motivo ele atualiza todos os registros deixando todos os registros iguais!

Exemplo de update:

UPDATE TABELA SET CAMPO = VALOR WHERE CAMPODECOMPARACAO = VALORDOCAMPO;

UPDATE COR SET NOMECOR = 'BRANCO' WHERE IDCOR = 1;
lucas.sampaio

Tá faltando o WHERE na instrução update.

A

QUANDO COLO O WHERE FICA: NO VALUE SPECIFIED FOR PARAMETER 4_texto em itálico_

lucas.sampaio

Como que estão as tabelas?
Criou as chaves primarias?

É que nem o @Jonathan_Medeiros escreveu:

UPDATE tabela SET campo=? WHERE chaveprimaria=?

E tem que ter mais um stmt, ou seja, stmt.setInt(4, campoDoId.getValor());. A ideia é essa.

Criado 24 de abril de 2017
Ultima resposta 24 de abr. de 2017
Respostas 4
Participantes 3