servletにjavaのソースコードを書いているのですが、タイトルにあるようにどうにも不可解なエラーが出てしまいます。
全て{}を1セットでまとめており、過不足はないはずなのですが、以下のソースコードの「}」部分にエラーが出てしまいます。
自分ではエラーを突き止められなかったので質問させていただきました。
よろしくお願いします。
}catch (SQLException e) {
//if,elseを閉じる }
問題のソースコード
package dateAll; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ProcessServ */ @WebServlet("/ProcessServ") public class ProcessServ extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ProcessServ() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("doGetで処理をしてしまっている"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //データベースへ接続するためのコード //PostgreSQLへの接続情報 Connection con ; PreparedStatement st; ResultSet rs; String url = "jdbc:postgresql://localhost:5432/database"; String user = "postgres"; String password = "password"; //色々な変数を定義、初期化 int id ; String questionanswer ; int finalid ; int ansid1; int ansid2; int ansid3; String a1; String a2; String a3; //JDBC driver setting //Class.forName("org.postgresql.Driver"); //PostgreSQLへの接続 //SQLを発行 try { st = con.prepareStatement("select id,questionanswer,finalid from question where parentid = ?"); //ProcessPagejspからpostされた値をStringからintに変換し、変数に代入 int post = Integer.parseInt(request.getParameter("postnum")); //SQ発行文の?部分を決定し、抽出されたデータをrsに代入 st.setInt(1, post); rs = st.executeQuery(); //rsに保存された次の質問文のデータを、それぞれidと文章に分けて変数に代入 while (rs.next()) { id = rs.getInt("id"); questionanswer = rs.getString("questionanswer"); finalid = rs.getInt("finalid"); } //finalidがnullの場合とそうでない場合に分岐させる if(finalid != 0) { st = con.prepareStatement("select meigentext,humanname,bookname from idconn left outer join meigen on meigenid"); }else { //質問文に値をセットする request.setAttribute("question", questionanswer); request.setAttribute("id", id); //対応する回答文およびidの取り出し、変数への代入 st.setInt(1, id); rs = st.executeQuery(); while (rs.next()) { ansid1 = rs.getInt("id"); a1 = rs.getString("questionanswer"); ansid2 = rs.getInt("id"); a2 = rs.getString("questionanswer"); ansid3 = rs.getInt("id"); a3 = rs.getString("questionanswer"); } //回答選択肢自身のidをセットする request.setAttribute("ans1", ansid1); request.setAttribute("ans1", ansid2); request.setAttribute("ans1", ansid3); //回答選択肢自身の質問文をセットする request.setAttribute("a1", a1); request.setAttribute("a2", a2); request.setAttribute("a3", a3); }catch (SQLException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); }finally { con.close(); // クローズ処理 } //if,elseを閉じる } //void doPostを閉じる } //classを閉じる }
追記
みなさま回答ありがとうございました。
インデントを見直して冷静に修正したら無事解決する事ができました!
何度見ても間違ってないと思ってましたが恥ずかしい限りです。
この反省を生かし、見やすいコードを意識して書くようにします。。。
回答3件
あなたの回答
tips
プレビュー