Ich bekomme eine seltsame SQLException auf eine Funktion, die ich mit JDBC gegen eine Datenbank ausführen. SQLException: Spalte 'Nachricht' nicht gefunden.Seltsame SQLException: Spalte nicht gefunden
Ich habe dies in meiner Funktion:
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();
Und ich diesen Fehler habe, so fügte ich diese nach dem st.executeQuery()
:
ResultSetMetaData meta = rs.getMetaData();
for (int index = 1; index <= meta.getColumnCount(); index++) {
System.out.println("Column " + index + " is named " + meta.getColumnName(index));
}
Und wenn ich meinen Code laufen wieder ist es das, was ich Als Ergebnis erhalten:
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
Und hier ist ein Screenshot meiner Tabelle Design, von My SQL Workbench
Und die Daten in der Tabelle
ich wirklich kann nicht herausfinden, was man hier los ist .... kann jemand helfen?
EDIT
Ich habe die *
in der gerade SELECT
Aussage ersetzt etwas auf die Frage hinzuzufügen, die ich gerade bemerkt.
Wenn ich die Message
Spalte aus der Auswahl entfernen, bekomme ich den gleichen Fehler für die TimeStamp
Spalte. Und wenn ich beide Spalten entferne, bekomme ich keine Fehler.
EDIT2
OK, das ist der Teil ich die Fehler bekommen, erhalte ich sowohl auf Meldung und Zeitstempel:
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();
}
}
Ich erhalte den Fehler auf den getString()
Methoden für jede Spalte
Stacktrace für TimeStamp
(gilt auch für Message
):
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)
Haben Sie Trigger auf dem Tisch? – BevynQ
Erhalten Sie den Fehler, wenn Sie den Int/Boolean in der SQL-Anweisung manuell festlegen? Das heißt, versuche "SELECT * FROM notification WHERE UserIDTo = 1 UND isNotified = 0" und führe es aus, ohne die PreparedStatement-Variablen zu setzen. – hotforfeature
könnten Sie ein Leerzeichen oder ein seltsames Zeichen im Spaltennamen haben? – Taylor