Duvidas ao tratar resultset nulo

Olá, em um programa que eu estou montando, estou trabalhando com um campo status em cada tabela do meu banco, no qual o valor é OK ou REMOVIDO.

E quando eu faço uma query com o seguinte sql :

select * from cliente where sta_cli not in ('REMOVIDO')[/code] para listar todos os clientes que naum foram removidos, se ele me retorna um valor nulo, dava erro, ae coloquei o seguinte if [code]if(rs.first() == false){}

Agora nao da o erro, mas quando eu tento navegar nos registro retornados pelo resultset com rs.next(), rs.first() …, ele simplimente não navega. o código de onde atualiza os campos é esse

[code] private void atualizaCampos(){
try{
if(rs.first() == false){}
else{
if(rs.first() == false){
limpaCampos();
}else{
if(rs.isAfterLast()){
rs.previous();
}
else if(rs.isBeforeFirst()){
rs.next();
}
if(!rs.wasNull()){
cmbEst.removeAllItems();
cmbNasc.removeAllItems();
lblNumCod.setText(String.valueOf(rs.getInt(“cod_cli”)));
txtNom.setText(rs.getString(“nom_cli”));
txtEnd.setText(rs.getString(“end_cli”));
txtCid.setText(rs.getString(“cid_cli”));
cmbEst.addItem(rs.getString(“est_cli”));
String partes[] = String.valueOf(rs.getDate(“nas_cli”)).split("-");
String nascimento = partes[2] + partes[1] + partes[0];
txtDNas.setText(nascimento);
txtTel.setText(rs.getString(“tel_cli”));
txtEmail.setText(rs.getString(“ema_cli”));
cmbNasc.addItem(rs.getString(“nascio_cli”));
txtCpf.setText(rs.getString(“cpf_cli”));
txtPass.setText(rs.getString(“pas_cli”));
}
}
}
}
catch(SQLException e){
mostraErro(e.toString(), e.getMessage());
}
catch(Exception e){
mostraErro(e.getMessage());
}

}[/code]

Alguem ae tem uma luz.

Manda o trecho de código em que você cria o statement.

Eu uso uma classe separada para conectar ao banco…

Vou colocar aki uma classe inteira, e a classe do banco…

[code]package consultabd;

import consultabd.;
import java.sql.
;
import javax.swing.;
import javax.swing.table.DefaultTableModel;
import java.util.
;

public class ServicoAdd extends javax.swing.JInternalFrame {

private ResultSet rs;
int altgrav;
ConectaBanco conectaBanco =  new ConectaBanco();
/** Creates new form Reservas */
public ServicoAdd() {
    initComponents();
    atualizaTabela(3);
    rs = conectaBanco.busca("select * from servicosadd where sta_ser not in ('REMOVIDO')");
    atualizaCampos();
}


private void atualizaCampos(){
    try{
      if(rs.last() == false){

      }
      else{
        if(rs.isAfterLast()){
            rs.previous();
        }
        else if(rs.isBeforeFirst()){
            rs.next();
        }
        if(!rs.wasNull()){

            lblNumCod.setText(String.valueOf(rs.getInt("cod_ser")));
            txtDesc.setText(rs.getString("des_ser"));
            txtPre.setText(rs.getString("pre_ser"));
         
        }
       }   
    } 

    catch(SQLException e){
        e.printStackTrace();
        mostraErro(e.toString(), e.getMessage());
    }
    catch(Exception e){
        e.printStackTrace();
        mostraErro(e.getMessage());
    }
    
}

private void atualizaTabela(int colunas) {
    rs = conectaBanco.busca("select cod_ser,des_ser,pre_ser from servicosadd where sta_ser not in ('REMOVIDO')");
    Vector cabecalho = new Vector();
       cabecalho.addElement("CODIGO");
        cabecalho.addElement("DESCRIÇÃO");
        cabecalho.addElement("PREÇO");


    try {
        
        Vector dados = new Vector();
        DefaultTableModel modelo = new DefaultTableModel();
        for (int i = 0; i < cabecalho.size(); i++) {
            modelo.addColumn(cabecalho.get(i));
        }

        
        while (rs.next()) {
            for (int i = 1; i <= colunas; i++) {
                dados.add(rs.getString(i));
            }
            modelo.addRow(dados.toArray());
            dados.removeAllElements();

        }
        tabSer.setModel(modelo);
    } catch (SQLException e) {
        e.printStackTrace();
        mostraErro(e.toString());
    } catch (Exception e) {
        e.printStackTrace();
        mostraErro(e.toString());
    }

}

private void excluir(int codigo){
int resposta = JOptionPane.showConfirmDialog(null, “Deseja realmente excluir esse registro?”,"",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resposta==0){
String apaga = “update servicosadd set sta_ser=‘REMOVIDO’ where cod_ser=”+codigo;
conectaBanco.grava(apaga);
atualizaTabela(3);
rs = conectaBanco.busca(“select * from servicosadd where sta_ser not in (‘REMOVIDO’)”);
atualizaCampos();
}
else{
mostraErro(“Exclusão Cancelada”);
}

}

private void gravar(int i){
    try{
        String gravar = null;
        String desc = txtDesc.getText().toUpperCase();
        String preco = txtPre.getText();

        if (i==0){
            int codigo = Integer.parseInt(lblNumCod.getText());
            gravar = "update servicosadd set des_ser='"+desc+"',pre_ser='"+preco+"' where cod_ser="+codigo;
        }
        if (i==1){
            gravar = "insert into servicosadd values(0,'"+desc+"','"+preco+"','OK')";
        }
        conectaBanco.grava(gravar);
        atualizaTabela(3);
        rs = conectaBanco.busca("select * from servicosadd where sta_ser not in ('REMOVIDO')");
        atualizaCampos();
    }
    catch(Exception e){
        e.printStackTrace();
        mostraErro(e.getMessage());
    }
    
}





private void mostraErro(String erro) {
    JOptionPane.showMessageDialog(null, erro, "Erro", JOptionPane.ERROR_MESSAGE);
}

private void mostraErro(String e, String erro) {
    JOptionPane.showMessageDialog(null, erro, e, JOptionPane.ERROR_MESSAGE);
}

private void limpaCampos(){
            txtDesc.setText("");
            txtPre.setText("");
    
}

private void habilitaCampos(boolean arg){

            txtDesc.setEditable(arg);
            txtPre.setEditable(arg);
            
}


private void gravando(boolean arg){
    btnGravar.setEnabled(arg);
    btnCancelar.setEnabled(arg);
    btnNovo.setEnabled(!arg);
    btnAlterar.setEnabled(!arg);
    btnRemover.setEnabled(!arg);
    btnPrimeiro.setEnabled(!arg);            
    btnAnterior.setEnabled(!arg);            
    btnProximo.setEnabled(!arg);            
    btnUltimo.setEnabled(!arg);            
}

private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {
limpaCampos();
habilitaCampos(true);
gravando(true);
altgrav = 1;
}

private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(true);
gravando(true);
altgrav = 0;
}

private void btnFecharActionPerformed(java.awt.event.ActionEvent evt) {
doDefaultCloseAction();
}

private void btnGravarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(false);
gravando(false);
gravar(altgrav);

}

private void btnRemoverActionPerformed(java.awt.event.ActionEvent evt) {
excluir(Integer.parseInt(lblNumCod.getText()));
}

private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
habilitaCampos(false);
gravando(false);
rs = conectaBanco.busca(“select * from servicosadd where sta_ser not in (‘REMOVIDO’)”);
atualizaCampos();
}

private void btnPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.first();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}

private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.previous();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}

private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.next();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
}

private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {
try{
rs.last();
atualizaCampos();
}
catch(Exception e){
mostraErro(e.getMessage());
}
} [/code]

Classe do que conecta ao banco

[code]package consultabd;
import com.mysql.jdbc.*;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;

public class ConectaBanco {

private String url = "jdbc:mysql://localhost/locadora";
private String driver = "com.mysql.jdbc.Driver";
private Connection con;
private Statement st;
private ResultSet rs;



public ResultSet busca(String sql){
    try{
        Class.forName(driver);
        con = (Connection) DriverManager.getConnection(url,"root","123");
        st = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        rs = st.executeQuery(sql);
         
        return rs;
    }
    catch(Exception e){
        mostraErro(e.getMessage());
        return null;
    }
    
}


public void grava(String sql){
    try{
        Class.forName(driver);
        con = (Connection) DriverManager.getConnection(url,"root","123");
        st = (Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        int respostadobanco = st.executeUpdate(sql);
        if(respostadobanco==1){
            JOptionPane.showMessageDialog(null, "Sucesso!!!");
        }
        else{
            JOptionPane.showMessageDialog(null, "Erro!!!");
        }
    }
    catch(SQLException e){
        mostraErro(e.toString(),e.getMessage());
    }
    catch(Exception e){
        mostraErro(e.toString(),e.getMessage());
    }
}


  
  

private void mostraErro(String erro) {
    JOptionPane.showMessageDialog(null, erro, "Erro", JOptionPane.ERROR_MESSAGE);
}

private void mostraErro(String e, String erro) {
    JOptionPane.showMessageDialog(null, erro, e, JOptionPane.ERROR_MESSAGE);
}

}[/code]

No primeiro codigo eu soh tirei a parte onde o netbeans criar para inicializar os componentes.

Antes de eu fazer esse tratamento para nulo, eu navegava normalmente, soh dava problema quando retornava nulo.