2021.02.08 국비 교육 25일차

JDBC

  • JDBC는 자바언어에서 데이터베이스에 접근할 수 있는 프로그래밍 API
  • JDBC는 대부분이 인터페이스로 되어있다.

Select

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Statement_select {

    public static void main(String[] args) {

        //1. 4가지 정보
        String driver ="oracle.jdbc.driver.OracleDriver"; //jdbc드라이버 클래스 경로지정 // ClassNotFoundException
        String url = "jdbc:oracle:thin:@localhost:1521:xe"; // db접속url/sid  //error : sqlException , java.sql.SQLRecoverableException
        String userid = "scott"; //접속 스키마 // java.sql.SQLException: ORA-01017: invalid username/password; logon denied
        String passwd = "tiger"; // 패스워드

        //2. 드라이버 생성 => new 이용
        //2. db 접속 및 sql 사용시 필요 객체 선언
        Connection con = null; // db 접속 객체 - url, id, passwd 필요
//        PreparedStatement pstmt = null; //sql 실행 객체 con을 통해 생성
        ResultSet rs = null; //sql 실행 객체 con을 통해 생성
        Statement stmt = null; //실행된 sql문의 select 결과를 ResultSet 객체에 담아서 옴

        try {
            Class.forName(driver); // 2.드라이버 로딩(생성)
            System.out.println("driver 로딩 성공");

        //3. 오라클 연결
            con = DriverManager.getConnection(url, userid, passwd);
            System.out.println("Connection 성공 : " + con);
            //getConnection(주소, 스키마아이디, 패스워드)

        //4. sql 작성 : 문자열로 작성, 디벨로퍼 사용 sql사용 ; 없음
            String sql = "select deptno x,dname, loc from dept";

        //5. SQL 실행 ==> Statement,PreparedStatemnet, CallableStatement(PL / SQL)
            stmt = con.createStatement();
            System.out.println(" stmt생성 성공 " + stmt);

        //6. 실행해서 결과받기
            rs= stmt.executeQuery(sql); // rs = select 결과를 담은 객체
            System.out.println("rs 결과 얻기 : " + rs);

            while(rs.next()) { // 결과 출력하기 - 하나의 레코드 접근
                int deptno = rs.getInt("x"); //하나의 레코드에서 컬럼 값 꺼내기 - 별칭사용, 타입지정
                String dname = rs.getString("dname"); //하나의 레코드에서 컬럼 값 꺼내기 - 컬럼 이름, 타입지정
                String loc = rs.getString("loc");

                System.out.println(deptno + " " + dname + " " + loc); // 하나의 레코드 결과 출력
            } // select 결과 순회 끝

        } catch(ClassNotFoundException e) { //Class.forName()
            e.printStackTrace();

        } catch(SQLException e) { //getConnection(), executeQuery()
            e.printStackTrace();
        }finally {
            try {
                //7. 자원 반납 반대순서로 실행
                if(rs != null)rs.close();
                if(stmt != null)stmt.close();
                if(con != null)con.close();

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

    } //end main

}

insert

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Statement_Insert_2 {

    public static void main(String[] args) {

        String driver ="oracle.jdbc.driver.OracleDriver"; 
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        String userid = "scott"; 
        String passwd = "tiger";

        Connection con = null;
        ResultSet rs = null;
        Statement stmt = null;

        try {
            Class.forName(driver);

            con = DriverManager.getConnection(url, userid, passwd);
            stmt = con.createStatement();

            int deptno = 99;
            String dname = "제조";
            String loc = "경기";

            String sql = "insert into dept(deptno, dname, loc) values(" + deptno + ", '" + dname + "', '" + loc +"')";
            int result = stmt.executeUpdate(sql);
            System.out.println("삽입 갯수 : " + result);

            String sql2 = "select deptno, dname, loc from dept";
            rs = stmt.executeQuery(sql2);
            while(rs.next()) {
                System.out.println(rs.getInt(1) + " : " + rs.getString(2) + " : " + rs.getString(3));
            }


        } catch (SQLException e) {
            e.printStackTrace();
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if(rs != null)rs.close();
                if(stmt !=null)stmt.close();
                if(con != null)con.close();
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
        }



    }

}

+ Recent posts