前提・実現したいこと
入力した社員IDに対応する社員が存在しない場合、「該当する社員は登録されていません」とメッセージを表示したい。
例
メニュー番号を入力してください: 3
更新する社員の社員IDを入力してください: 5
該当する社員は登録されていません
※「:」の右側の記述はユーザが入力した値です。
発生している問題・エラーメッセージ
社員IDが存在しない場合のメッセージの出し方がわかりません。
該当のソースコード
Java
1package jp.co.sss.jdbc.chapter05; 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6import java.sql.Connection; 7import java.sql.PreparedStatement; 8 9public class Update { 10 11public static void main(String[] args) throws IOException { 12 update(); 13 14 System.out.println("=== 社員管理システム ==="); 15 System.out.println("1. 全件表示"); 16 System.out.println("2. 登録"); 17 System.out.println("3. 更新"); 18 System.out.println("4. 削除"); 19 System.out.println("5. 終了"); 20 21 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 22 System.out.println("メニュー番号を入力してください:"); 23 String no3 = br.readLine(); 24 25} 26 27public static void update() throws IOException { 28BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 29 30Connection connection = null; 31PreparedStatement preparedStatement = null; 32System.out.println("メニュー番号を入力してください:"); 33String str = br.readLine(); 34int no3 = Integer.parseInt(str); 35switch (no3) { 36case 3: 37 try { 38 39 System.out.println("更新する社員の社員IDを入力してください: "); 40 String empId = br.readLine(); 41 System.out.println("社員名:"); 42 String empName = br.readLine(); 43 System.out.println("性別(男性:1、女性:2):"); 44 String gender = br.readLine(); 45 System.out.println("生年月日(西暦年/月/日):"); 46 String birthday = br.readLine(); 47 System.out.println("部署ID(1:営業部、2:経理部、3:総務部):"); 48 String dept_id = br.readLine(); 49 50 connection = DBManager.getConnection(); 51 52 connection.setAutoCommit(false); 53 54 String sql = "UPDATE employee SET emp_name = ?,gender = ?,birthday = ?,dept_id = ? WHERE emp_id = ?"; 55 56 preparedStatement = connection.prepareStatement(sql); 57 58 preparedStatement.setString(5, empId); 59 preparedStatement.setString(1, empName); 60 preparedStatement.setString(2, gender); 61 preparedStatement.setString(3, birthday); 62 preparedStatement.setString(4, dept_id); 63 64 int cnt = preparedStatement.executeUpdate(); 65 66 System.out.println("社員情報を更新しました"); 67 68 } catch (Exception e) { 69 try{ 70 connection.rollback(); 71 }catch(SQLException e1){ 72 e1.printStackTrace(); 73 } 74 System.out.println("システムエラーが発生しました。"); 75 } finally { 76 DBManager.close(preparedStatement); 77 DBManager.close(connection); 78 }break; 79 case 5: 80 System.out.println("システムを終了します"); 81 break; 82 } 83} 84}
試したこと
public static void update() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Connection connection = null;
PreparedStatement preparedStatement = null;
System.out.println("メニュー番号を入力してください:");
String str = br.readLine();
int no3 = Integer.parseInt(str);
switch (no3) {
case 3:
try {
System.out.println("更新する社員の社員IDを入力してください: ");
String empID = br.readLine();
String cnt_sql = "SELECT * from employee WHERE emp_id = ?"; connection = DBManager.getConnection(); preparedStatement = connection.prepareStatement(cnt_sql); preparedStatement.setString(1, empID); ResultSet result = preparedStatement.executeQuery(); int colCount = result.getMetaData().getColumnCount(); if(colCount == 0){ System.out.println("該当する社員は登録されていません"); break; }
実行結果
メニュー番号を入力してください:3
更新する社員の社員IDを入力してください: 5
社員名:
性別(男性:1、女性:2):
・
・
・
補足情報(FW/ツールのバージョンなど)
Oracleの演習課題で社員管理システムを作っています。
データベースはこんな感じです。
社員ID 社員名 性別 生年月日 部署名
1 鈴木太郎 男性 1986/10/12 営業部
2 田中二郎 男性 1979/07/02 経理部
3 渡辺花子 女性 1988/04/23 経理部
7 田中博人 男性 1982/02/28 営業部