2 PreparesStatement

É correto ultilzar o mesmo PreparedStatement com 2 clasusulas SQL diferentes e depois fecha-lo, ou posso ter algum problema futuro?


PreparedStatement ps ....
ps = con.prepareStatement("INSERT INTO");
ps.setString(1,"bla");
ps.execute();

ps = con.prepareStatement("UPDATE ... set ...");
ps.setString(1,"Ble");
ps.executeUpdate();
//Aqui eu fecho o ps e con ...
ps.close();
con.close();
.....
       Cara tambem tenho essa msm duvida, pra ficar mais tranquilo de erros futuros eu crio duas ps para cada operacao e depois fecho as duas tb, mas se for possivel usar apenas uma sem ter problemas, eu tb quero saber

Sim, voce pode reutilizar. Lembre-se apenas que antes de criar outro statement vc precisa dar um close() nele, caso contrario voce tera um memory leak que rapidamente ira derrubar o seu sistema.

Ou seja:

 PreparedStatement ps ....
 ps = con.prepareStatement("INSERT INTO");
 ps.setString(1,"bla");
 ps.execute();

ps.close(); // <-- FECHE
 
 ps = con.prepareStatement("UPDATE ... set ...");
 ps.setString(1,"Ble");
 ps.executeUpdate();
 //Aqui eu fecho o ps e con ...
 ps.close();

 con.close(); // <-- A conexao vc libera soh no final mesmo

Rafael

Ok Rafael,

Mas no meu caso, estou recuperando o ultimo registro inserido no banco de dados e estou usando o Mysql.
faço assim.

rs = ps.Conn.PreparedStatement(SELECT LAST_INSERT_ID());

Se eu fizer como vc falou eu não consigo recuperar um ultimo registro, eu estou usando o mesmo PreparedStatement pra inserir e logo após pesquisar o ultimo valor inserido. existe uma outra maneira para mim recuperar esse ultimo registro (sem usar select MAX()) , ja que não é recomendado usar o mesmo ps sem antes fecha-lo ?

Grato.

Uma coisa nao tem nada a ver com a outra. Voce pode fechar o statement e depois fazer a query para pegar o ultimo id gerado. Voce teria problemas apenas se fechasse a conexao.

Rafael