質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Q&A

0回答

735閲覧

sttSql.executeUpdate(strSql);の例外を処理したい

ypk

総合スコア80

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

0グッド

0クリップ

投稿2020/05/26 07:34

編集2020/05/26 08:48

初めまして。

現在JSPの学習をしているものです。
もし何か、気になる箇所などございましたらご教授いただけたら幸いです。どうぞよろしくお願いいたします。

#作りたいもの

No、名前、場所(no,name,loc)の場所を登録できるシステムを作成したいです。
具体的には、「insert_top.jsp」にて入力した情報を「insert.jsp」にて受け取れるシステムを作成しようとしています。

#発生している問題

「executeUpdate」の例外処理をどのように行えばよいのかで苦戦しています。

insert_top.jspにて文字を入力し、「登録」ボタンを押すと下記のようなエラーが発生してしまいます。

タイプ 例外報告

メッセージ [/jsp/insert.jsp] の処理中に行番号 [26] で例外が発生しました。

説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

例外
org.apache.jasper.JasperException: [/jsp/insert.jsp] の処理中に行番号 [26] で例外が発生しました。

23: db = DriverManager.getConnection(DBUrl,DBUser,DBPassword);
24: sttSql=db.createStatement();
25:
26: sttSql.executeUpdate(strSql);
27:
28: sttSql.close();
29: db.close();

#私のコード

JSP

1<%@ page contentType="text/html; charset=UTF-8" %> 2 3<html> 4<head> 5<title>情報登録</title> 6</head> 7<body> 8<h1 style="background:#cccccc">情報登録</h1> 9<form method="POST" action="insert.jsp"> 10<table border="0"> 11<tr> 12<th style="color:#FFffFF;background:#0086b2;text-align:right;">NO</th> 13<td><input type="text" name="no" size="35" /></td> 14</tr> 15<tr> 16<th style="color:#FFffFF;background:#0086b2;text-align:right;">名前</th> 17<td><input type="text" name="name" size="50" /></td> 18</tr> 19<tr> 20<th style="color:#FFffFF;background:#0086b2;text-align:right;">場所</th> 21<td><input type="text" name="loc" size="50" /></td> 22</tr> 23<tr> 24<td colspan="2"> 25<input type="submit" value="登録" /> 26<input type="reset" value="取消" /> 27<input type="button" value="戻る" onClick="history.back()" /> 28</td> 29</tr> 30</table> 31</form> 32</body> 33</html>

JSP

1<%@ page contentType="text/html; charset=UTF-8" 2import="java.sql.*" %> 3<% request.setCharacterEncoding("UTF-8"); 4 5//接続情報 6String DBDriver = "com.mysql.jdbc.Driver"; 7String DBUrl = "jdbc:mysql://localhost:33××/××";//意図的に伏せています 8String DBUser = "root"; 9String DBPassword = "××";//意図的に伏せています 10 11//DB接続オブジェクト 12Connection db = null; 13 14//命令を管理するオブジェクト 15Statement sttSql = null; 16 17String strSql = "insert into DEPT(DEPTNO,DNAME,LOC) values(" + 18 request.getParameter("no") + ",'" + 19 request.getParameter("name") + "','" + 20 request.getParameter("loc") + "')"; 21 22Class.forName(DBDriver); 23 db = DriverManager.getConnection(DBUrl,DBUser,DBPassword); 24sttSql=db.createStatement(); 25 26sttSql.executeUpdate(strSql); 27 28sttSql.close(); 29db.close(); 30 31response.sendRedirect("list_top.jsp"); 32

#発見

どうやら、既に存在しているNo(主キー)と同一のものを入力しようとする場合にエラーが発生することが判明しました。リストに存在していないNoを登録すると、ちゃんと登録されます。

しかし、既に存在しているNoを入力したときにエラーが発生してしまうことを回避したいです。知恵のある方いらっしゃいますか。私も、エラーを適切に回避し「その番号は既に存在しています」と表示させることができるように試行錯誤してみます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問