JDBC を使用してデータベースに対して実行する関数で、奇妙な 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
そして、これはMySQL Workbenchからの私のテーブルのデザインのスクリーンショットです
そしてテーブルのデータ
ここで何が起こっているのか本当にわかりません.... 誰でも助けてもらえますか?
EDIT
私はちょうど気づいた質問に何かを追加するため*
に、ステートメントの を置き換えました。
選択から列を削除すると、列に対して同じエラーが発生します。両方の列を削除しても、エラーは発生しません。SELECT
Message
TimeStamp
EDIT2
OK、これはエラーが発生する部分です。メッセージとタイムスタンプの両方で発生します。
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();
}
}
getString()
各列の
StackTraceのメソッドでエラーが発生しますTimeStamp
(の場合と同じ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)