Boa Tarde Galera,
Em uma tela de cadastro de clientes, possuo 4 Botoes onde:1 primeiro; 2 anterior; 3 proximo; 4 ultimo;
Nestes botoes a função deles, nada mais é do que realizar o select no banco e trazer para os jTextField, os botoes 1 e 4 estão funcionando Perfeitamente, ja os botes 2 e 3 não estão.
Vamos por partes:
Botão 3.
private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {
jButtonAlterar.setEnabled(true);
jButtonExcluir.setEnabled(true);
try {
conecta.executaSQL("SELECT * FROM CD_CLIENTE");
while(conecta.rs.next()){
jTextFieldCodCliente.setText(String.valueOf(conecta.rs.getInt("ID_CLIENTE")));
jTextFieldNomeCliente.setText(conecta.rs.getString("CD_NOME_CLIENTE"));
jTextFieldClienteEndereco.setText(conecta.rs.getString("CD_CLIENTE_ENDERECO"));
jTextFieldClienteBairro.setText(conecta.rs.getString("CD_CLIENTE_BAIRRO"));
jTextFieldClienteCidade.setText(conecta.rs.getString("CD_CLIENTE_CIDADE"));
jTextFieldClienteCep.setText(conecta.rs.getString("CD_CLIENTE_CEP"));
jTextFieldClienteTelefone.setText(conecta.rs.getString("CD_CLIENTE_TELEFONE"));
jTextFieldClienteCpfCnpj.setText(conecta.rs.getString("CD_CLIENTE_CPFCNPJ"));
jTextFieldClienteEmail.setText(conecta.rs.getString("CD_CLIENTE_EMAIL"));
jTextAreaClienteObservação.setText(conecta.rs.getString("CD_CLIENTE_OBSERVACAO"));
int clienteAtivo = conecta.rs.getInt("FG_CLIENTE_ATIVO");
if (clienteAtivo == 1) {
jCheckBoxClienteAtivo.setSelected(true);
} else {
jCheckBoxClienteAtivo.setSelected(false);
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao exibir dados\n" + ex);
}
}
com o codigo acima, ao compilar a aplicação, no momento em que clico em 3 proximo, o botão só traz o primeiro registro do banco, posso clicar inumeras vezes no botão que a unica informação que ficará no textfield sera a do primeiro registro do BD.
PS* no codigo acima estou utilizando while(rs.next()) porém eu ja tentei só o conecta.rs.next(); e nenhum dos dois jeitos deu certo.
Botão 2.
private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {
jButtonAlterar.setEnabled(true);
jButtonExcluir.setEnabled(true);
try {
conecta.executaSQL("SELECT * FROM CD_CLIENTE");
conecta.rs.previous();
jTextFieldCodCliente.setText(String.valueOf(conecta.rs.getInt("ID_CLIENTE")));
jTextFieldNomeCliente.setText(conecta.rs.getString("CD_NOME_CLIENTE"));
jTextFieldClienteEndereco.setText(conecta.rs.getString("CD_CLIENTE_ENDERECO"));
jTextFieldClienteBairro.setText(conecta.rs.getString("CD_CLIENTE_BAIRRO"));
jTextFieldClienteCidade.setText(conecta.rs.getString("CD_CLIENTE_CIDADE"));
jTextFieldClienteCep.setText(conecta.rs.getString("CD_CLIENTE_CEP"));
jTextFieldClienteTelefone.setText(conecta.rs.getString("CD_CLIENTE_TELEFONE"));
jTextFieldClienteCpfCnpj.setText(conecta.rs.getString("CD_CLIENTE_CPFCNPJ"));
jTextFieldClienteEmail.setText(conecta.rs.getString("CD_CLIENTE_EMAIL"));
jTextAreaClienteObservação.setText(conecta.rs.getString("CD_CLIENTE_OBSERVACAO"));
int clienteAtivo = conecta.rs.getInt("FG_CLIENTE_ATIVO");
if (clienteAtivo == 1) {
jCheckBoxClienteAtivo.setSelected(true);
} else {
jCheckBoxClienteAtivo.setSelected(false);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao exibir dados\n" + ex);
}
}
já no botão 2 - Anterior quando clico neste botão, o sistema entra no catch e retorna o seguinte: Before start of result set.
Detalhe, na momento da inicialização da tela, os textfield’s vem preenchido com o ultimo registro;
Abaixo segue script executaSQL
public void executaSQL(String sql){
try{
stm = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_READ_ONLY,rs.CONCUR_UPDATABLE);
rs = stm.executeQuery(sql);
}catch (SQLException ex){
JOptionPane.showMessageDialog(null, “Erro executaSQL\n Erro:”+ex.getMessage());
}
}
Sinceramente nunca vi dar problema neste tipo relativamente simples de operação, desde já agradeço pela atenção de Todos.