saudações a todos!
Eu tenho um formulário. Onde eu tenho implantados os botões de navegação (Primeiro ? Anterior ? proximo ? ultimo), salvar, editar, apagar… em fim, tudo estar funcionando como manda a liturgia!
Meu problema é qui eu só consigo fazer uma coisa de cada vez;
ex.:
quando o janela e aberta, eu navego entre os registros(sem problemas), agora, caso eu apague algum registro, faço algum alteração…(ex.: apagar, cadastrar…)n consigo mais navegar entre os registros com os botões de navegaçao!
a seguinte exeção e lançada:
java.sql.SQLException: Operation not allowed after ResultSet closed
se eu cadastrar algum registro e clica no botão ultimo(pode ser qual q outro botão) pammm
java.sql.SQLException: Operation not allowed after ResultSet closed
sim, todas as alterações são feitas no BD, Mesmo com as exeções sendo lançadas!!
eu acho que o problema estar na meu método que carregar os campos do BD e coloca no formulário:
(eu uso ele no construtor da classe"janela" e nos metodos que salva e apaga registro de BD,afim de mostrar na tela as alterações)
segue o codigo:
//pega os dados no banco de dados e coloca dentro do formulario nos seus espectivos campos
private void carregarDadosNoformulario(){
rs = rf.carregarDadosDaTabela();//seleciona todos os campos do banco de dados e ler dentro do rs
try{
rs.next();
rs.last();
recuperarCampoDaTabela();//recuperar os dados do banco de dados e coloca dentro do formulario
} catch (SQLException ex) {
Logger.getLogger(JanelaCadastrarFilme.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void recuperarCampoDaTabela() throws SQLException{
lblCodigoBD.setText(rs.getString("cod"));
txtNome.setText(rs.getString("nome"));
txtObs.setText(rs.getString("obs"));
String aCategoria = rs.getString("categoria");
cbCategoria.setSelectedItem(aCategoria);
String aQtd = rs.getString("qtd");
cbQtd.setSelectedItem(aQtd);
String aSituacao = rs.getString("situacao");
cbSituacao.setSelectedItem(aSituacao);
}
so por questão de informação, segue meu metodo q faz a conecção com o BD(por questão de organização, isso estar e outra classe)
public ResultSet carregarDadosDaTabela(){
ResultSet rs = null;
try {
Statement stmt = conecxao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("Select * from tabFilme");
} catch (SQLException ex) {
Logger.getLogger(RepositorioFilme.class.getName()).log(Level.SEVERE, null, ex);
}
return rs;
}
//metodo q salva um novo registro
public int salvarFilme(Filme novoFilme) throws SQLException{
String consultaSalvar = "INSERT INTO tabFilme (nome, categoria, hora, data, situacao, qtd, obs) VALUES (?, ?, ?, ?, ?, ?, ?)";
PreparedStatement pstm = conecxao.prepareStatement(consultaSalvar);
//stm.setInt(1, 1);
pstm.setString(1, novoFilme.getNome());
pstm.setString(2, novoFilme.getCategoria());
pstm.setString(3, novoFilme.getHora());
pstm.setString(4, novoFilme.getData());
pstm.setString(5, novoFilme.getSituacao());
pstm.setInt(6, novoFilme.getQtd());
pstm.setString(7, novoFilme.getObs());
// retorna a quantidade de linhas afetadas
int resultado = pstm.executeUpdate();
finalizarConexao(pstm, conecxao);
return resultado;
}
//metodo que finaliza uma determina conecao
private void finalizarConexao(Statement stm, Connection conexao) throws SQLException{
stm.close();
conexao.close();
}
obs.: desculpas pela falta de informações técnicas, é qui sou novo em java ainda!!! e desculpas se fiz alguma besteira ai, é qui, esse é meu 1° acesso no forum e n sei muito das regras da lista(ainda)!!!
abraços!