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