JDBC
H5-3. 0723_ JDBC 10번 과제코드
55yudi
2021. 10. 31. 15:56
package myjdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
public class JDBCExam { //과제10 (정답코드)
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
System.out.println("조회할 이름을 입력하세요.");
String name = scan.nextLine();
System.out.println(name);
//사용자가 아무것도 입력하지 않고 엔터치면 프로그램이 종료되게 하기
//while문 등으로 반복하기
EmpDAO1 empDAO = new EmpDAO1();
while(name != null && name.length() != 0) {
empDAO.printEmployee(name); //오류: 호출안되는 이유 : Class가 달라서 안불러와진다.
//--> 객체를 생성해서 호출하면 된다.(16줄 적고 18줄 앞에 변수. 붙이기)
System.out.println("조회할 이름을 입력하세요.");
name = scan.nextLine();
}
System.out.println("프로그램을 종료합니다.");
}
}
class EmpDAO1 {
public void printEmployee(String name) throws Exception {
//이 부분을 작성하시오.
//전달받은 이름을 활용하여 데이터베이스에서 데이터를 가져와 화면에 출력합니다.
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
String sql = "select * from employees where first_name = '" + name + "'"; //
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()) { //if문으로 하고 가져올 정보의 열(컬럼) 번호를 가져오거나 이름을 직접 가져와도 된다.
//String lastName = rs.getString("last_name"); 이렇게도 가능!
String lastName = rs.getString(3);
String firstName = rs.getString(2);
int empId = rs.getInt(1);
System.out.printf("empId: %d, first_name: %s, last_name: %s", empId, firstName, lastName);
}
// rs.close();
con.close(); //커넥션 자체를 종료하는게 더 좋기도 하다.
}
}