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);
}
}
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;
1 curtida
Tá faltando o WHERE
na instrução update
.
QUANDO COLO O WHERE FICA: NO VALUE SPECIFIED FOR PARAMETER 4_texto em itálico_
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.