मुझे जेडीबीसी का उपयोग कर डेटाबेस के विरुद्ध चलाने वाले फ़ंक्शन पर एक अजीब SQLException मिल रहा है। SQLException: कॉलम 'संदेश' नहीं मिला।अजीब SQLException: कॉलम नहीं मिला
मैं अपने समारोह में इस राशि:
st = con.prepareStatement("SELECT NotificationID,UserIDFrom,UserIDTo,Message,Timestamp,isNotified FROM notification WHERE UserIDTo=? AND isNotified=?");
st.setInt(1, _UserID);
st.setBoolean(2, false);
System.out.println("st is: " + st);
rs = st.executeQuery();
और मुझे लगता है कि त्रुटि मिली, तो मैं st.executeQuery()
के बाद यह कहा:
ResultSetMetaData meta = rs.getMetaData();
for (int index = 1; index <= meta.getColumnCount(); index++) {
System.out.println("Column " + index + " is named " + meta.getColumnName(index));
}
और जब मैं अपने कोड को चलाने के फिर से इस मैं क्या है परिणामस्वरूप प्राप्त करें:
Column 1 is named NotificationID
Column 2 is named UserIDFrom
Column 3 is named UserIDTo
Column 4 is named Message
Column 5 is named TimeStamp
Exception in thread "main" java.sql.SQLException: Column 'Message' not found.
Column 6 is named isNotified
और यहां मेरी तालिका के डिज़ाइन का एक स्क्रीनशॉट है, मेरा एसक्यूएल Workbench
और तालिका में डेटा
मैं सच में समझ नहीं क्या यहाँ हो रहा है .... किसी को भी मदद कर सकते हैं?
संपादित
मैं सिर्फ सवाल है कि मैं सिर्फ देखा करने के लिए कुछ जोड़ने के लिए SELECT
बयान में *
से बदल दिया है।
यदि मैं चयन से Message
कॉलम हटा देता हूं तो मुझे TimeStamp
कॉलम के लिए एक ही त्रुटि मिलती है। और यदि मैं दोनों कॉलम हटा देता हूं तो मुझे कोई त्रुटि नहीं मिलती है। मैं प्रत्येक स्तंभ के लिए
StackTrace के लिए getString()
तरीकों पर त्रुटि मिलती है
while (rs.next()) {
NotificationID = rs.getInt("NotificationID");
System.out.println("NotificationID: " + NotificationID);
SenderID = rs.getInt("UserIDFrom");
System.out.println("SenderID: " + SenderID);
From = findUserName(SenderID);
try {
body = rs.getString("Message");
System.out.println("body: " + body);
} catch (Exception e) {
System.out.println("Message error: " + e);
e.printStackTrace();
}
try {
time = rs.getString("Timestamp");
System.out.println("time: " + time);
} catch (Exception e) {
System.out.println("Timestamp error: " + e);
e.printStackTrace();
}
}
:
EDIT2
ठीक है, यह हिस्सा मैं त्रुटियों मिलता है, मैं संदेश और समय-चिह्न पर दोनों मिल अपने isNotified की डेटाप्रकार
java.sql.SQLException: Column 'TimeStamp' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1167)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5733)
at NotifyMe_Server.Database.getUnNotified(Database.java:444)
at tests.Tests.main(Tests.java:39)
आप मेज पर किसी भी चलाता है? – BevynQ
यदि आप SQL कथन में मैन्युअल रूप से Int/Boolean सेट करते हैं तो आपको त्रुटि मिलती है? यानी, "चयन * से अधिसूचना से चुनें जहां UserIDTo = 1 और isNotified = 0" है और PreparedStatement चर सेट किए बिना इसे निष्पादित करें। – hotforfeature
क्या आपके पास स्तंभ नाम में कुछ सफेद जगह या अजीब चरित्र हो सकता है? – Taylor