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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

3回答

2040閲覧

TryCatchを利用した例外処理

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/07/27 06:40

###前提・実現したいこと
入力した社員IDに対応する社員が存在しない場合メッセージ表示する

例(対応するIDが無い場合)
更新する社員の社員IDを入力してください: 5
該当する社員は登録されていません

例(対応するIDがある場合)
更新する社員の社員IDを入力してください: 4
社員名: 田中一郎
(1: 男性, 2: 女性): 1
生年月日: 1999/1/23
部署ID(1:営業部、2:総務部、3:広報部): 2
社員情報を更新しました

###発生している問題・エラーメッセージ
どのように例外処理を記述するのか分かりません

###該当のソースコード

Java

1 System.out.println("更新する社員の社員IDを入力してください:"); 2 System.out.println("社員ID:"); 3 String UpEmpId = br.readLine(); 4 5 // 更新する値を入力 6 System.out.println("社員名:"); 7 String UpEmpName = br.readLine(); 8 System.out.println("性別(男性:1、女性:2):"); 9 String UpGender = br.readLine(); 10 System.out.println("生年月日:"); 11 String UpBirthday = br.readLine(); 12 System.out.println("部署ID(1:営業部、2:経理部、3:総務部):"); 13 String UpDeptId = br.readLine(); 14 15 // 更新処理 16 update(UpEmpId, UpEmpName, UpGender, UpBirthday, UpDeptId); 17 18// 更新メソッド 19 public static void update(String UpEmpId, String UpEmpName, String UpGender, String UpBirthday, String UpDeptId) { 20 Connection connection = null; 21 PreparedStatement preparedStatement = null; 22 23 try { 24 // DBに接続 25 connection = DBManager.getConnection(); 26 27 // SQL文を準備 28 String sql = "UPDATE employee SET emp_name = ?, gender = ?, birthday = ? , dept_id = ? WHERE emp_id = ?"; 29 30 // ステートメントを作成 31 preparedStatement = connection.prepareStatement(sql); 32 33 // 入力値をバインド 34 preparedStatement.setString(5, UpEmpId); 35 preparedStatement.setString(1, UpEmpName); 36 preparedStatement.setString(2, UpGender); 37 preparedStatement.setString(3, UpBirthday); 38 preparedStatement.setString(4, UpDeptId); 39 40 // SQL文を実行 41 preparedStatement.executeUpdate(); 42 System.out.println("社員情報を更新しました。"); 43 44 // 空白 45 System.out.println(); 46 } catch (Exception e) { 47 e.printStackTrace(); 48 } finally { 49 DBManager.close(preparedStatement); 50 51 DBManager.close(connection); 52 } 53 }

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

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

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

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

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

guest

回答3

0

java

1if(//preparedStatement.executeUpdate()の戻り値が1以上であれば){ 2 System.out.print("社員情報を更新しました。"); 3}else{ 4 System.out.print("該当する社員は登録されていません"); 5}

でよいのではないでしょうか。

投稿2017/07/27 06:55

s.t.

総合スコア2021

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

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

0

上記の出力方法の場合は、どんな例外処理がおきても、
tryの中でおきたエラーであるならば、該当する社員は登録されていません
が表示される造りになってしまいますが。

それを回避するのであれば、
Updateをかける前にSelectして社員IDが存在するかのチェックをして
その結果によってメッセージを出力したほうが良いと思います。

投稿2017/07/27 06:50

King_of_Flies

総合スコア382

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

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

0

今回のコードの場合、更新対象の利用者IDが無かった場合にエラーが出る行は
preparedStatement.executeUpdate();で
デバッグでステップインしているくとこの直後の処理で、
catchに入ると思います。

ここではException eをprintStackTraceしているだけなので、
catchの中に、System.out.print("該当する社員は登録されていません");
を追加すれば、メッセージの出力が出来ると思います。

投稿2017/07/27 06:46

King_of_Flies

総合スコア382

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問