मेरे पास निम्न विधि हस्ताक्षर के साथ एक सामान्य जावा विधि है:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
यह एक कनेक्शन खोलता है, PreparedStatement
sql स्टेटमेंट का उपयोग करता है और queryParams
वैरिएबल लेंथ एरे में पैरामीटर बनाता है , इसे चलाता है, ResultSet
(a CachedRowSetImpl
) को कैश करता है, कनेक्शन को बंद करता है, और कैश्ड रिजल्ट सेट को लौटाता है।
त्रुटियों को लॉग करने वाली विधि में मेरे पास अपवाद हैंडलिंग है। मैं लॉग के भाग के रूप में sql स्टेटमेंट लॉग करता हूं क्योंकि यह डीबगिंग के लिए बहुत उपयोगी है। मेरी समस्या यह है कि स्ट्रिंग वैरिएबल लॉगिंग के sql
साथ वास्तविक विवरण के बजाय टेम्पलेट स्टेटमेंट लॉग होता है। मैं उस वास्तविक विवरण को लॉग करना चाहता हूं जिसे निष्पादित किया गया था (या निष्पादित करने की कोशिश की गई थी)।
तो ... क्या वास्तविक एसक्यूएल बयान को प्राप्त करने का कोई तरीका है जो एक द्वारा चलाया जाएगा PreparedStatement
? ( इसे खुद बनाए बिना । अगर मुझे PreparedStatement's
एसक्यूएल तक पहुंचने का कोई रास्ता नहीं मिल रहा है, तो मैं शायद इसे खुद ही catch
बनाऊंगा।