昨天在Stack上有多人推薦使用try-with-resources。我現在正在爲我所有的數據庫操作執行此操作。今天,我想將語句更改爲PreparedStatement以使查詢更安全。但是,當我嘗試在資源嘗試中使用準備好的語句時,我總是收到錯誤,如'標識符預期'或';'要麼 ')'。Java在try-with-resources無法正常工作的情況下準備了語句
我在做什麼錯?或者這不可能?這是我的代碼:
try (Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
PreparedStatement stmt = conn.prepareStatement("SELECT id FROM users WHERE id = ? LIMIT 1");
stmt.setInt(1, user);
ResultSet rs = stmt.executeQuery()) {
// if no record found
if(!rs.isBeforeFirst()) {
return false;
}
// if record found
else {
return true;
}
} catch (SQLException e) {
// log error but dont do anything, maybe later
String error = "SQLException: " + e.getMessage() + "\nSQLState: " + e.getSQLState() + "\nVendorError: " + e.getErrorCode();
return false;
}
在第一行,將';'改爲'){'。 (愚蠢的錯字?) – immibis