Duvida com JOptionPane.ShowInputDialog

Olá a todos!

Enquanto praticava fique com uma duvida…

criei o código abaixo que buscar um paciente no bd pelo rg e adiciona ao meus textfield. Pego o rg pelo JOptionpane.showinputdialog

…cod…
String rg = (String) JOptionPane.showInputDialog(this, “Digite o RG do paciente a ser pesquisado:”);

    try {
        Paciente p = new PacienteDAO().buscarPaciente(rg);
        if(p == null){
         JOptionPane.showMessageDialog(this, "Paciente não encontrado!");   
        }else{
            txtId.setText(String.valueOf(p.getId()));
            txtNome.setText(p.getNome());
            txtRG.setText(p.getRg());
            txtTelefone.setText(p.getTelefone());
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(this, ex.getMessage());
    }

está funcionando, mas… no JOptionPane.ShowInputDialog aparece cancelar e ok, mas mesmo se clicar em cancelar ele vai tentar buscar no bd, então como poderia concerta isso? se fosse o JOptionPane.ShowconfirmDialog saberia fazer, mas… nesse sei não…

Agradeço desde já.

Você só precisa verificar o retorno do método:

{

  public void teste() {
    String rg = JOptionPane.showInputDialog(this, "Digite o RG do paciente a ser pesquisado");
    if (!"".equals(rg) && input != null) {
           //método de pesquisa do rg
    } else if (rg == null || "".equals(rg)) {
        System.out.println("Vazio");
    }
}

}

Embora eu pensei em algo do tipo. Pensei que se o usuario já estivesse começado a digitar e só depois decidisse cancelar, aquelas poucas caracteres ainda sim retornaria na variavel rg.
abrigado pela ajuda!

Sem problemas amigo, fórum é para isso mesmo. :sunglasses::metal: