article thumbnail image
Published 2022. 11. 29. 17:23

select문 => 실행결과 ResultSet에 받기 => ResultSet으로 부터 데이터 하나씩 뽑아서 자바 객체에 세팅 

예시)  내 PC(localhost) DB상 JDBC계정에 있는 TEST 테이블에 1번 데이터 조회해보기 

//조회된 데이터들을 담을 자바객체 세팅 
Test t = null;
//JDBC에 필요한 객체 미리 세팅
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;

-실행할 sql문 변수에 담기 

String sql = "SELECT TNO,TNAME,TDATE FROM TEST WHERE TNO = 1";

-> 사용자가 입력한 값으로 조회하고자할때 sql문 ( Scanner이용) 

Scanner sc = new Scanner(System.in);
System.out.print("조회하고자하 하는 번호 입력 : ");
int no = sc.nextInt();
String sql = "SELECT TNO,TNAME,TDATE FROM TEST WHERE TNO =" + no;

 

- JDBC과정

try {
        //1) jdbc driver 등록
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //ClassNotFoundException 발생시 : ojdbc.jar 파일 추가 안했을경우  /오타 없는지 확인 

        //2) Connection 객체 생성 == DB에 연결(URL, 계정명,비밀번호 )
         conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");

        //3) Statement 객체 생성 (sql문 실행을 위한 객체)
          stmt = conn.createStatement();

        //4,5) sql문을 전달하면서 실행 후 결과(조회된 결과) 받기 => ResultSet객체에 받기 
         rset = stmt.executeQuery(sql);

         //6) ResultSet에 담겨있는 데이터들을 하나씩 뽑아서 vo객체의 각 필드에 주섬주섬 옮겨담기 
         if(rset.next()) { // 행커서 움직여주는 역할, 뿐만 아니라 해당 행이 있으면(조회된 행이 있을경우) true, 없으면 false를 반환 -

        //현재 rset의 커서가 가리키고있는 한 행의 데이터를 싹 다 뽑아서 Test객체에 주섬주섬 담기 
        //rset으로부터 "어떤 컬럼"의 값을 "어떤 타입"으로 뽑을건지 제시 
        //rset.getInt(컬럼명), rset.getString(컬럼명), rset.getDate(컬럼명)

         //- 기본생성자로 생성 후 setter메소드 

             t = new Test();
             t.setTestNo(rset.getInt("TNO"));
             t.setTestName(rset.getString("tname"));//대소문자 상관없음 (컬럼명이기때문에)
             //t.setTestDate(rset.getDate(3));//컬럼 순번도 제시 가능 -권장 x
             t.setTestDate(rset.getDate("TDATE"));


          //- 매개변수 생성자로 생성과 동시에 초기화 
             t = new Test(rset.getInt("TNO"),rset.getString("tname"),rset.getDate("TDATE"));
             }


            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();

            }finally {
                try {
                    //7) 다 쓴 JDBC용 객체 반납(생성된 역순으로 반납)
                    rset.close();
                    stmt.close();
                    conn.close();

                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            //조회된 결과 
            if(t == null) {//생성안됨 == 조회결과가 없었을 경우
                System.out.println("조회결과가 없습니다.");
            }else { //생성됨 == 조회결과가 있었을 경우 
                System.out.println(t);
            }
        }

    }

>> select 결과 

'JDBC' 카테고리의 다른 글

JDBC 01 _ delete문  (0) 2022.11.30
JDBC 01 _ update문  (0) 2022.11.30
JDBC 01 _ 여러행 select문 조회  (0) 2022.11.30
JDBC 01 _ insert문 삽입  (0) 2022.11.29
JDBC 01 _ Basic  (0) 2022.11.29
복사했습니다!