含み検索を行い、検索条件に合うデータベースの社員情報を表示したいです。
Mainを実行したところ、なぜか二回検索条件を聞かれるうえに、検索もうまくできません。
まだ勉強したばかりで、どこが間違えているのか、なにがわかっていないのかよくわかりません・・・。
とても困っています。よろしくお願いいたします。
java
1 2//SyainDAO 3//社員に関するクラス 4//検索条件に当てはます社員情報をリストとして戻す 5import java.sql.Connection; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.util.ArrayList; 10 11public class SyainDAO { 12 private Connection con = null; 13 14 public SyainDAO(Connection con) { 15 this.con = con; 16 } 17 18 public ArrayList<Syain> dokensaku() { 19 ArrayList<Syain> syainList = new ArrayList<>(); 20 String sql = Kensaku.createSql(); //Kensakuで作成したSQL 21 PreparedStatement pStmt = null; 22 23 try { 24 pStmt = con.prepareStatement(sql); 25 ResultSet rs =pStmt.executeQuery(); 26 while (rs.next()) { 27 int empno = rs.getInt("emp_no"); 28 String lname = rs.getString("l_name"); 29 String fname = rs.getString("f_name"); 30 String lkana = rs.getString("l_kana"); 31 String fkana = rs.getString("f_kana"); 32 String password = rs.getString("pass_word"); 33 int gender = rs.getInt("gen_der"); 34 int deptno = rs.getInt("dept_no"); 35 String deptname = rs.getString("dept_name"); 36 37 Busyo busyo = new Busyo(deptno, deptname); 38 syainList.add(new Syain(empno, lname, fname, lkana, fkana, password, gender, deptno, busyo)); 39 } 40 } catch (SQLException e) { 41 e.printStackTrace(); 42 } 43 if(syainList.size()==0) { 44 System.out.println("入力された社員は存在しません"); 45 } 46 47 return syainList; 48 } 49}
java
1 //SyainTO 2public class Syain { 3 private int empno; 4 private String lname; 5 private String fname; 6 private String lkana; 7 private String fkana; 8 private String password; 9 private int gender; 10 private int deptno; 11 private Busyo busyo; 12 13 public Syain(int empno, String lname, String fname, String lkana, String fkana, String password, int gender, int deptno, Busyo busyo) { 14 this.empno = empno; 15 this.lname = lname; 16 this.fname = fname; 17 this.lkana = lkana; 18 this.fkana = fkana; 19 this.password = password; 20 this.gender = gender; 21 this.deptno = deptno; 22 this.busyo = busyo; 23 } 24 25 26 //empno 27 public int getEmpno() { 28 return empno; 29 } 30 31 //lname 32 public String getLname() { 33 return lname; 34 } 35 36 //fname 37 public String getFname() { 38 return fname; 39 } 40 41 //lkana 42 public String getLkana() { 43 return lkana; 44 } 45 46 //fkana 47 public String getFkana() { 48 return fkana; 49 } 50 51 //password 52 public String getPassword() { 53 return password; 54 } 55 56 //gender 57 public int getGender() { 58 return gender; 59 } 60 61 //deptno 62 public int getDeptno() { 63 return deptno; 64 } 65 66 //deptname 67 public String getDeptname() { 68 return busyo.getDeptname(); 69 } 70 71 public String toString() { 72 return getEmpno() + getLname() + " " + getFname() + "(" +getLkana() + " " + getFkana() + ")" + getDeptname(); 73 } 74}
java
1//Kensaku 2import java.io.BufferedReader; 3import java.io.IOException; 4import java.io.InputStreamReader; 5 6public class Kensaku { 7 8 public static String createSql() { 9 StringBuilder sql = new StringBuilder(); 10 sql.append("SELECT e.empno, e.lname, e.fname, e.lkana, e.fkana, e.password, e.gender, e.deptno, d.deptname FROM employee e JOIN department d ON e.deptno = d.deptno WHERE"); 11 12 //入力されていればwhere句で連結、されなければスキップ 13 try { 14 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 15 boolean flag = false; 16 17 System.out.print("氏"); 18 System.out.println("->"); 19 String lname = br.readLine(); 20 if (lname.equals("")) { 21 sql.append("lname like '%" + lname + "%'"); 22 flag = true; 23 } 24 25 System.out.print("名"); 26 System.out.println("->"); 27 String fname = br.readLine(); 28 if (lname.equals("")) { 29 if(!flag){ 30 sql.append("fname like '%" + fname + "%'"); 31 flag = true; 32 }else { 33 sql.append("and + fname like '%" + fname + "%'"); 34 } 35 } 36 37 System.out.print("氏(カナ)"); 38 System.out.println("->"); 39 String lkana = br.readLine(); 40 if (lkana.equals("")) { 41 if(!flag){ 42 sql.append("lkana like '%" + lkana + "%'"); 43 flag = true; 44 }else { 45 sql.append("and + lkana like '%" + lkana + "%'"); 46 } 47 } 48 49 System.out.print("名(カナ)"); 50 System.out.println("->"); 51 String fkana = br.readLine(); 52 if (fkana.equals("")) { 53 if(!flag){ 54 sql.append("fkana like '%" + fkana + "%'"); 55 flag = true; 56 }else { 57 sql.append("and + fkana like '%" + fkana + "%'"); 58 } 59 } 60 61 System.out.print("部署名"); 62 System.out.println("->"); 63 String deptname = br.readLine(); 64 if (deptname.equals("")) { 65 if(!flag){ 66 sql.append("deptname like '%" + deptname + "%'"); 67 flag = true; 68 }else { 69 sql.append("and + fdeptname like '%" + deptname + "%'"); 70 } 71 } 72 73 System.out.print("部署コード"); 74 System.out.println("->"); 75 String deptno = br.readLine(); 76 if (deptno.equals("")) { 77 if(!flag){ 78 sql.append("deptno like '%" + deptno + "%'"); 79 flag = true; 80 }else { 81 sql.append("and + deptno like '%" + deptno + "%'"); 82 } 83 } 84 }catch(IOException e) { 85 e.printStackTrace(); 86 } 87 return sql.toString(); 88 } 89}
java
1//Main 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.SQLException; 5import java.util.ArrayList; 6 7 8public class MainSystem{ 9 public static void main(String[] args) { 10 //データベースに接続 11 String jdbcUrl = 12 "jdbc:mysql://localhost/eimsdb?serverTimezone=JST"; 13 String userId = "eimsuser"; 14 String pass = "eimspass"; 15 16 try(Connection con = DriverManager.getConnection(jdbcUrl, userId, pass)){ 17 18 SyainDAO syain = new SyainDAO(con); 19 Kensaku.createSql(); 20 ArrayList<Syain> sList = syain.dokensaku(); 21 22 for(Syain s :sList) { 23 System.out.println(s); 24 } 25 }catch (SQLException e) { 26 e.printStackTrace(); 27 } 28 } 29}
java
1//Busyo 2public class Busyo { 3 private int deptno; 4 private String deptname; 5 6 public Busyo(int deptno, String deptname) { 7 this.deptno = deptno; 8 this.deptname = deptname; 9 } 10 11 //deptno 12 public int getDeptno() { 13 return deptno; 14 } 15 16 //deptname 17 public String getDeptname() { 18 return deptname; 19 } 20 21}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/18 14:41