Tôi muốn sử dụng báo cáo đã chuẩn bị, cho many reasons. Nhưng, tôi muốn tạo ra một phương pháp mà trông như thế này:Tại sao tôi cần kết nối để tạo PreparedStatements?
/* This opens a connection, executes the query, and closes the connection */
public static void executeNonQuery(String queryString);
Nói cách khác, tôi muốn logic ứng dụng của mình tới chỉ phải xây dựng các truy vấn và thức ăn trong các thông số, nhưng không phải đối phó với các kết nối & báo cáo . Tuy nhiên, PreparedStatements được tạo ra từ một đối tượng kết nối, vì vậy tôi hiện đang buộc phải chuẩn bị chuỗi truy vấn bằng cách sử dụng String.format() - butt xấu xí và nguy hiểm.
Có cách nào để làm những gì tôi muốn mà không cần sử dụng String.format() không?
Phương thức executeNonQuery của bạn có một vấn đề: nhận kết nối. Nếu bạn tạo một lần mỗi khi phương thức này được thực thi, bạn sẽ gặp phải nhiều vấn đề về hiệu suất thực hiện nhiều lần (việc tạo và đóng kết nối là tốn kém). Nếu điều này được đóng gói trên đối tượng chỉ tạo kết nối trên cuộc gọi đầu tiên, bạn sẽ gặp sự cố: khi nào cần đóng kết nối? Có lẽ dựa trên thời gian? Nếu bạn sử dụng các trường tĩnh vào bộ nhớ cache, hãy cẩn thận việc này sẽ không được thu thập. Hãy coi chừng các cuộc gọi đồng thời, khi lưu vào bộ nhớ đệm một kết nối, mặc dù: không có cơ chế khóa (chẳng hạn như được đồng bộ hóa), bạn có thể tạo nhiều kết nối. –