मैं एक जेटीबल लिखने की कोशिश कर रहा हूं जो एक परिणामसेट से डेटा लेता है और परिणामस्वरूप उचित कॉलम नाम और पंक्ति डेटा मानों के साथ एक गतिशील आकार वाली तालिका बनाने के लिए इसका उपयोग करता है लेकिन मुझे गतिशील रूप से मेरे लिए कॉलम नाम प्राप्त करने के लिए जेडीबीसी नहीं मिल सकती है।सरल getColumnName (0) कॉल फेंकता है अमान्य कॉलम अनुक्रमणिका: getValidColumnIndex
मुझे पता है कि मेरा चयन कथन अच्छा है! मैं अपने परिणाम प्रिंटर क्लास के साथ परिणामों को आसानी से प्रिंट कर सकता हूं, लेकिन मुझे कुछ कारणों से कॉलम नाम नहीं मिल रहे हैं।
कोड: http://pastebin.com/SSNdCkNu
उत्पादन:
Connected to DB!
SNUM, SNAME, STATUS, CITY, SUPPLIERS_ID_SEQ // printed by static Suppliers class
Columns: 5 // result set shows there are 5 valid columns as expected
Exception in thread "main" java.sql.SQLException: Invalid column index: getValidColumnIndex
at oracle.jdbc.driver.OracleResultSetMetaData.getValidColumnIndex(OracleResultSetMetaData.java:138)
at oracle.jdbc.driver.OracleResultSetMetaData.getColumnName(OracleResultSetMetaData.java:306)
at Main.main(Main.java:15)
वाह बहुत हास्यास्पद है। या शायद मैं सिर्फ शर्मिंदा हूं क्योंकि त्रुटि इतनी सरल थी। किसी भी तरह से मैंने प्रोग्रामिक रूप से कॉलम की संख्या प्राप्त करने का अनुमान लगाया और फिर उनका नाम प्राप्त करना एक अच्छी विधि थी? क्योंकि यदि उपयोगकर्ता एक चुनिंदा कथन करता है जो सभी कॉलम का उपयोग नहीं करता है, तो मेरे लिए चयनित कॉलम के नाम जानने के लिए कोई रास्ता नहीं है या नहीं। – anon58192932
आप अपने डेटाटाइप के साथ किसी दिए गए परिणाम में मौजूद कॉलम जानने के लिए ResultSetMetaData का उपयोग कर सकते हैं। – Vikdor
हाँ मैं यही कर रहा हूं :) मैंने सादगी के लिए हार्ड कोड 0 का उपयोग किया क्योंकि मैं बग की उत्पत्ति को खोजने की कोशिश कर रहा था। – anon58192932