Tenho um form onde faz consulta no banco de dados e joga nos jTextFields as informações, só que ir para próxima linha não esta funcionando, e ir para anterior nem sei como faz. Já ir para ultima ou ir para primeira funciona corretamente.
Obs: Ele só funciona quando estou no ultimo registro da Tabela e aperto o botão Próximo onde ele vai pro registro que é o do início.
Agora queria saber como que faz para ir para uma linha anterior porque do jeito que estou fazendo ele da uma mensagem de erro:
“SQLException: Operação inválida na posição corrente do cursor.”
Obs: Não importando em que linha eu esteja da Tabela, ele da esse erro sempre para o botão voltar.
Codigo a seguir:
private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {
try {
connect();
if(rs.next()){
mostrar();
}
}
disconnect();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void jButtonAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
try {
connect();
rs.previous();
mostrar();
disconnect();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void jButtonPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
try {
connect();
rs.first();
mostrar();
disconnect();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void jButtonUltimoActionPerformed(java.awt.event.ActionEvent evt) {
try {
connect();
rs.last();
mostrar();
disconnect();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void connect() {
try {
conn = DriverManager.getConnection(url, userDB, passDB);//Sem problemas aqui.
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("SELECT * FROM FORNECEDORES");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void disconnect() {
try {
rs.close();
stmt.close();
conn.close();
/* if(conn.isClosed()==true){
JOptionPane.showMessageDialog(null, "Está desconectado!");
}
else{
JOptionPane.showMessageDialog(null, "Está conectado!");
}*/
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
private void mostrar() {
try {
jTextFieldCod.setText(rs.getString("COD_FORNECEDOR"));
jTextFieldNome.setText(rs.getString("NOME"));
jTextFieldSite.setText(rs.getString("SITE"));
jTextFieldCNPJ.setText(rs.getString("CNPJ"));
jTextFieldEmail.setText(rs.getString("EMAIL"));
jTextFieldCEP.setText(rs.getString("CEP"));
jTextFieldEnd.setText(rs.getString("ENDEREC"));
jTextFieldNum.setText(rs.getString("NUM"));
jTextFieldCompl.setText(rs.getString("COMPL"));
jTextFieldBairro.setText(rs.getString("BAIRRO"));
jTextFieldCidade.setText(rs.getString("CIDADE"));
jTextFieldFone1.setText(rs.getString("FONE1"));
jTextFieldFone2.setText(rs.getString("FONE2"));
jTextFieldFax.setText(rs.getString("FAX"));
jTextAreaObs.setText(rs.getString("OBS"));
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
Acabei de descobrir que quando ponho no código do botão Próximo…
private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {
try {
connect();
//################
if(rs.next()){
if(rs.next()){
mostrar();
}
}
//################
}
disconnect();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
…ele pula direto para a segunda linha da Tabela. E se eu add mais um if() ele pula sempre pra 3ª linha e assim vai. Logo deduzi que ele só esta se baseando apenas na 1ª linha sempre quando uso o comando rs.next()rs.next().
Quem puder me ajudar agradeço desde então.
Leandro D. Mussio