Được rồi, tôi đã nhận ra rằng tôi thực sự đã hỏi quá nhiều câu hỏi mà không đóng góp lại cho cộng đồng, nhưng tôi muốn ý kiến của bạn về điều này. Giả sử tôi cóThực hiện hai Java PreparedStatements với một lựa chọn kiểu kết nối
private void closeAll(ResultSet rs, PreparedStatement ps, Connection con) {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
}
if (con != null)
try {
con.close();
} catch (SQLException e) {
}
}
và tôi muốn thực hiện một số thao tác trên cơ sở dữ liệu MySQL của mình bằng một kết nối. Là nó tốt hơn để viết
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, null);
}
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
hoặc
Connection con = ...;
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
rs.close();
ps.close();
ps = con.prepareStatement(...);
rs = ps.executeQuery();
if (rs.next()) ...;
} catch (SQLException e) {
System.err.println("Error: " + e);
} finally {
closeAll(rs, ps, con);
}
tôi xem xét tốt hơn để có nghĩa là một trong hai an toàn hơn, rõ ràng hơn, súc tích hơn, hoặc mạnh mẽ hơn. Tôi không chắc liệu sau này sẽ luôn luôn đóng bất kỳ báo cáo chuẩn bị và bộ kết quả được mở bất cứ khi nào nó gặp một ngoại lệ, trong khi tôi tin rằng nó trông ngắn gọn hơn. Nhưng trước đây trông đẹp hơn vì nó phù hợp hơn, nhưng nó đặt nhiều chi phí hơn vì nó sử dụng nhiều thử cuối cùng khối.
Tôi nhận thấy rằng phần quản lý tài nguyên tự động của Java 7 của Dự án Coin sẽ buộc tôi phải dựa vào tài nguyên cũ vì tài nguyên được sử dụng trong tiêu đề hoàn toàn là cuối cùng trong nội dung. Tuy nhiên, tôi có một thời gian khá lâu trước khi tôi phải lo lắng về việc sửa đổi mã của tôi để thích ứng với nó để ARM và có thể loại bỏ mã soạn sẵn, vì vậy câu hỏi vẫn đứng: hai phong cách trên, đó sẽ là thực hành tốt hơn? Nếu cả hai đều thực hiện các hành vi mong đợi, liệu cái sau có mang lại cho tôi hiệu suất đáng chú ý có thể tha thứ cho phong cách "xấu xí" hơn không?
câu trả lời của bạn không liên quan đến câu hỏi – MozenRath