Tôi có một phương thức Java chung với chữ ký phương thức sau:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Nó mở một kết nối, xây dựng một PreparedStatement
câu lệnh sql và các tham số trong queryParams
mảng có độ dài thay đổi, chạy nó, lưu trữ ResultSet
(trong a CachedRowSetImpl
), đóng kết nối và trả về tập kết quả được lưu trữ.
Tôi có xử lý ngoại lệ trong phương pháp ghi lại lỗi. Tôi ghi nhật ký sql như một phần của nhật ký vì nó rất hữu ích để gỡ lỗi. Vấn đề của tôi là việc sql
ghi nhật ký biến String ghi lại câu lệnh mẫu bằng? Thay vì giá trị thực. Tôi muốn ghi lại câu lệnh thực tế đã được thực thi (hoặc đã cố thực hiện).
Vậy ... Có cách nào để lấy câu lệnh SQL thực tế sẽ được chạy bởi a PreparedStatement
không? ( Không tự mình xây dựng nó. Nếu tôi không thể tìm cách truy cập PreparedStatement's
SQL, có lẽ tôi sẽ tự mình xây dựng nó trong catch
es của mình .)