Dúvida de fechamento de conexões e utilização do PreparedStatement!

Olá Javeiros, olha eu aqui novamente rs…

Por favor, deem uma analisada no código abaixo e vejam se estou fazendo coisa errada ou pode ser assim:

[code]Conexao con = new Conexao();

PreparedStatement psSQL = con.conConect.prepareStatement(“SELECT
A1_COD FROM A1 WHERE A1_COD = '”+ strCodCli +"’");

ResultSet Resultados = psSQL.executeQuery();
if (Resultados.next())

{
strCodPes = Resultados.getString(1);
}

if(strCodPes != null)
{
JOptionPane.showMessageDialog(null,“Código já cadastrado!”);

jtfCodCli.setText("");

jtfCodCli.grabFocus();

jtfCodCli.setText(""); jtfNomCli.setText("");

jtfFanCli.setText(""); jtfFisJur.setText("");

jtfTipCli.setText(""); jtfEndCli.setText("");

jtfMunCli.setText(""); jtfEstCli.setText("");

jtfBaiCli.setText(""); jtfCEPCli.setText("");

jtfTelCli.setText(""); jtfCPFCli.setText("");

jtfInsCli.setText(""); jtfRGCli.setText("");

jtfConCli.setText(""); jtfFunCli.setText("");

jtfEmaCli.setText("");

panCadCli.setVisible(true);
}
else
{
psSQL = con.conConect.prepareStatement(“INSERT INTO A1
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)”);

psSQL.setString(1,strCodCli); psSQL.setString(2,strNomCli);

psSQL.setString(3,strFanCli); psSQL.setString(4,strFisJur);

psSQL.setString(5,strTipCli); psSQL.setString(6,strEndCli);

psSQL.setString(7,strMunCli); psSQL.setString(8,strEstCli);

psSQL.setString(9,strBaiCli); psSQL.setString(10,strCEPCli);

psSQL.setString(11,strTelCli); psSQL.setString(12,strCPFCli);

psSQL.setString(13,strInsCli); psSQL.setString(14,strRGCli);

psSQL.setString(15,strConCli); psSQL.setString(16,strFunCli);

psSQL.setString(17,strEmaCli); psSQL.executeUpdate();

Resultados.close();

psSQL.close();

JOptionPane.showMessageDialog(null,“CADASTRO EFETUADO COM
SUCESSO!”);

trePriArv.setSelectionRow(1);

panCadCli.setVisible(false);

}[/code]

Eu utilizo a variável psSQL para realizar a primeira consluta e logo em seguida realizo um INSERT utilizando essa mesma variável (psSQL),
1- É correto isso?
2- Estou fechando as conexões corretamente?

Valeu! 8)

Algumas sugestões:

  1. Você pode fechar Resultados logo abaixo do primeiro if porque você não usa mais ele depois.
  2. O mesmo vale para o psSQL porque quando você usa ele pela segunda vez já está criando outra instância e precisa fechar a anterior. Portanto, feche ele após o primeiro if também.
  3. Continue executando o ps.Close que tem no final do programa porque ele está fechando corretamente a segunda instância após o uso.

Uma pergunta: o código que você mandou está funcionando?

Sim, falta um trecho acima que é onde pego os valores dos JTextFields, pq?

Valeu pelas sugestões! 8)

Por favor, quando colar o código, tente quebrar
as linhas grandes para não exceder o tamanho da tela :wink: