सबसे पहले, PreparedStatement
प्लेसहोल्डर (वे ?
चीज़ें) कॉलम मानों . के लिए हैं केवल, तालिका के नाम, स्तंभ नाम, SQL फ़ंक्शन/खंड, वगैरह के लिए नहीं। बेहतर उपयोग String#format()
बजाय। दूसरा, आपको नहीं . करना चाहिए '?'
. जैसे प्लेसहोल्डर्स को कोट करें , यह केवल अंतिम क्वेरी को विकृत करेगा। PreparedStatement
बसने वाले पहले से ही आपके लिए उद्धरण (और भागने) का काम कर रहे हैं।
यहाँ निश्चित SQL है:
private static final String SQL = "select instance_id, %s from eam_measurement"
+ " where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where"
+ " resource_group_id = ?) and DSN like ? order by 2");
यहां इसका उपयोग करने का तरीका बताया गया है:
String sql = String.format(SQL, "SUBSTR(DSN,27,16)"); // This replaces the %s.
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, defaultWasGroup);
preparedStatement.setString(2, "%Module=jvmRuntimeModule:freeMemory%");
यह भी देखें :
- सन जेडीबीसी ट्यूटोरियल:तैयार वक्तव्यों का उपयोग करना
- स्ट्रिंग सिंटैक्स प्रारूपित करें