jsp を使用して ms access データベースにデータを挿入しようとしていますが、SQLException が表示されます。クエリにはサブクエリがあります。 アクセスでクエリを実行しようとしましたが、クエリは正常に実行されます。jsp が例外をスローする理由がわかりません。クエリを 3 時間何度も何度もチェックしましたが、まだ役に立ちません。誰か助けてくれませんか??
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
//Creating new statement
Connection conn = DriverManager.getConnection("jdbc:odbc:accdbJava");
String uName = ((UserInfo) session.getAttribute("userInfo")).getUserName().trim();
//Creating statement
PreparedStatement stmt = conn.prepareStatement("INSERT INTO Message (User_ID, Heading, Body, DatePosted) VALUES ('(SELECT ID FROM User WHERE UserName = '" + uName + "')', '" + messageItem1.getSubject() + "', '" + messageItem1.getMessage() + "', '" + messageItem1.getDatePosted() + "');");
//Executing the update
stmt.executeUpdate();
//Closing connection, statement
stmt.close();
conn.close();
}
catch(Exception e) {
e.printStackTrace();
}
例外は次のとおりです。
*java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] クエリ式 ''(SELECT ID FROM User WHERE UserName = 'hrai')'' の構文エラー (演算子がありません)。sun.jdbc.odbc.JdbcOdbc.createSQLException (未知のソース) で sun.jdbc.odbc.JdbcOdbc.standardError (未知のソース) で sun.jdbc.odbc.JdbcOdbc.SQLPrepare (未知のソース) で sun.jdbc.odbc.JdbcOdbcConnection .prepareStatement (不明なソース) の sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement (不明なソース) の PostMessage.addMessageToDatabase(PostMessage.java:118) の PostMessage.doPost(PostMessage.java:55) の javax.servlet.http.HttpServlet org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.