Wenn PreparedStatements in einem regelmäßigen Java Try-Catch-Block verwendet wird, kann ich die PreparedStatement ändern, um verschiedene Abfragen ausführen, wenn ich brauche, etwa so:Wie verwende ich PreparedStatement zweimal mit Try-with-Resources?
String sqlStatement = "update someTable set someValue = true";
try{
PreparedStatement pstmt = con.prepareStatement(sqlStatement);
pstmt.executeUpdate();
/* Here I change the query */
String anotherSqlStatement = "update aDifferentTable set something = false";
pstmt = con.prepareStatement(anotherSqlStatement);
pstmt.executeUpdate();
}
catch(Exception ex){
...
}
Was ist der richtige Weg Schnupper mit dem dies mit Java zu tun -Ressourcen? Dies ist, was ich versucht habe, aber "Die Ressource PSTMT einer Try-with-Resources-Anweisung kann nicht zugewiesen werden".
try(Connection con = DriverManager.getConnection(someConnection, user, password);
PreparedStatement pstmt = con.prepareStatement(sqlStatement)){
ResultSet rs = pstmt.executeQuery();
....
/* Here I attempt to change the query, but it breaks */
String anotherSqlStatement = "select something from someTable";
pstmt = con.prepareStatement(anotherSqlStatement);
}
catch(Exception ex){
...
}
Ich will nicht wieder die Variable erklären, verstehe ich, dass der Zweck des Try-mit-Ressourcen besiegen würde, ich will nur es auf etwas anderes übertragen. Was ist der richtige Weg?
Ich bin nicht sicher, dass dies ein Duplikat ist; Diese Frage * versucht * Aufgaben zu erledigen, er versucht nur mit mehr als einer Ressource. – chrylis
Allgemeiner gesagt, niemals eine Variable für einen semantisch unterschiedlichen Zweck wiederverwenden. Es ist verwirrend und eine gute Möglichkeit, Bugs einzuführen. Unveränderlichkeit ist dein Freund. – AjahnCharles