Tenho um Jcombobox que carrega os dados do meu banco de dados:
Assim:
Curso:[______________________]
[Salvar] [Excluir]
Quero Usar o Jcombobox para Excluir um item selecionado nele!!!
Como faço!!!
Segue meu codigo!!!
private void bt_excluirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario","root","11111");
String query = "DELETE FROM dados_curso WHERE curso_cadastrado = (?)" ;
PreparedStatement stmt = conn.prepareStatement(query);
//Consegui desenvolver o codigo ate aqui!!!
} catch (ClassNotFoundException classNotFound){
classNotFound.printStackTrace();
System.exit(1);
} catch (SQLException sqlException){
sqlException.printStackTrace();
System.exit(1);
}
}
Se o modelo de dados do seu JComboBox for um DefaultComboBoxModel (e muito provavelmente é), basta usar o método removeElement() ou removeElementAt():
[quote=roger_rf]Se o modelo de dados do seu JComboBox for um DefaultComboBoxModel (e muito provavelmente é), basta usar o método removeElement() ou removeElementAt():
No indice do obejto a excluir quero excluir qual estiver selecionado pelo mouse!!!
fiz desse jeito!!!
private void bt_excluirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario","root","11111");
String query = "DELETE FROM dados_curso WHERE curso_cadastrado = (?)" ;
PreparedStatement stmt = conn.prepareStatement(query);
((DefaultComboBoxModel) cb_curso.getModel()).removeElementAt(cb_curso.getSelectedIndex());
stmt.executeUpdate();
stmt.close();
conn.close();
} catch (ClassNotFoundException classNotFound){
classNotFound.printStackTrace();
System.exit(1);
} catch (SQLException sqlException){
sqlException.printStackTrace();
System.exit(1);
}
}
Mas deu erro de SQL, segue o erro!!!
java.sql.SQLException: No value specified for parameter 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
Este erro não está relacionado à exclusão do item na ComboBox. Você se esqueceu de informar ao PreparedStatement o código do curso que queria excluir:
stmt.setObject(1, codigoDoCursoAExcluir);
stmt.executeUpdate();
private void bt_excluirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario","root","11111");
String query = "DELETE FROM dados_curso WHERE curso_cadastrado = (?)" ;
PreparedStatement stmt = conn.prepareStatement(query);
((DefaultComboBoxModel) cb_curso.getModel()).removeElementAt(cb_curso.getSelectedIndex());
stmt.setObject(1, cb_curso);
stmt.executeUpdate();
stmt.close();
conn.close();
} catch (ClassNotFoundException classNotFound){
classNotFound.printStackTrace();
System.exit(1);
} catch (SQLException sqlException){
sqlException.printStackTrace();
System.exit(1);
}
}
Valeu cara Funcionou!!! Fiz desse jeito!!!
Opa ainda não esta excluindo!!!
ELe exclui na hora da execução, mas depois que eu fecho o aplicativo e volto a exeutar novamente, ele não exclui do banco!!!
Cada elemento da ComboBox não corresponde a um curso? Você deveria fazer assim:
stmt.setObject(1, [chave primária do curso selecionado na ComboBox]);
Da maneira que você está fazendo, você passando A PRÓPRIA COMBOBOX para stmt.setObject(), não a chave primária do elemento a excluir.
Pronto agora sim
private void bt_excluirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/funcionario","root","11111");
String query = "DELETE FROM dados_curso WHERE curso_cadastrado = (?)" ;
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(1, (String) cb_curso.getSelectedItem());
stmt.executeUpdate();
atualizar_cb();
stmt.close();
conn.close();
} catch (ClassNotFoundException classNotFound){
classNotFound.printStackTrace();
System.exit(1);
} catch (SQLException sqlException){
sqlException.printStackTrace();
System.exit(1);
}
}