Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ALLYES

[2022년 청년친화형 기업 ESG지원 사업 - 16] 본문

ESG

[2022년 청년친화형 기업 ESG지원 사업 - 16]

Allyes_99 2022. 9. 26. 17:26

일시 : 2022.09.26

시간 : 9:00 ~ 18:00


오전 : java 시험

오후 : java


오전 망함


오후

JDBC(Java DataBase Connectivity)

  • JDBC 연결 단계
    • 0. ojdbc.jar 를 프로젝트에 추가
      • 프로젝트 우클릭 - build path - configure build path 
      • c - oracleexe - app - product - jdbc - ojdbc6.jar 추가
    • 1. JDBC Driver 동적 로딩 : DBMS 드라이버 로딩
      • 동적로딩 : 프로그램이 실행되면 그 즉시 타입이 결정됨
      • 동적 로딩을 위해서 메소드 불러오기
        • Class.forName("oracle.jdbc.driver.OracleDriver");
        • oracle.jdbc.driver - 패키지명
        • OracleDriver - 클래스명

    • 2. 데이터베이스 연결 : 통로 설정
      • DB에 접근하기 위해서 변수를 사용해서 DB url, id, pw 정리하고 사용
      • String url ="jdbc:oracle:thin:@127.0.0.1:1521:xe";
        • jdbc:oracle:thin : oracle thin driver 사용
        • 127.0.0.1 : localhost
        • 1521 : Port Number
        • xe : DB 별칭
      • String id = "hr";
      • String pw = "hr";
      •  Java, DB를 왔다갔다 하면서 데이터를 저장, 전송 : Connection 객체 생성
      • 여권처럼 DB 접근 가능한지 정보들을 검사
      • ID, PW맞다면 Ok, 틀리다면 Failed
    • 3. SQL 쿼리문 실행 : 실행문
      • sql파일 생성
      • String sql = "INSERT INTO MEMBER values('AA', '1111', '김다예', 24)";

        PreparedStatement psmt = conn.prepareStatement(sql);
        // preparedStatement 역할 : SQL문 전달 해주는 역할
        // 자바, DB 왔다갔다 하는 객체 --> conn

        // SQL 실행
        int cnt = psmt.executeUpdate();

        if(cnt > 0) {
        System.out.println("insert 성공");
        }
        else {
        System.out.println("insert 실패");
        }
    • 4. 연결 종료 
  • Java의 오류 2가지
    • 컴파일 오류 : Syntax error  >> 문법적 오류 발생
    • 런타임 오류 : 문법적 오류X >> 실행하면 그 즉시 오류 발생
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Ex01_insert {

	public static void main(String[] args) {
		// JDBC 연결 순서
		// 0.ojdbc.jar 를 프로젝트에 추가
		// 1. 드라이버 로딩
		// 2. 데이터 베이스 연결
		// 3. 쿼리문 실행
		// 4. 연결 종료

		// 1. 동적로딩을 위해서 메소드 불러오기
		try { // try-catch : 예외 처리를 하기 위한 문법
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// oracle.jdbc.driver - 패키지명
			// OracleDriver - 클래스명

			// 2. DB연결
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String id = "hr";
			String pw = "hr";

			Connection conn = DriverManager.getConnection(url, id, pw);
			if (conn != null) {
				System.out.println("연결 성공");
			} else {
				System.out.println("연결 실패");
			}

			// 3. SQL문 전송
			String sql = "INSERT INTO MEM values('Two', '0809', '김다나', 26)";
			

			PreparedStatement psmt = conn.prepareStatement(sql);
			// preparedStatement 역할 : SQL문 전달 해주는 역할
			// 자바, DB 왔다갔다 하는 객체 --> conn

			// SQL 실행
			int cnt = psmt.executeUpdate();
			if (cnt > 0) {
				System.out.println("insert 성공");
			} else {
				System.out.println("insert 실패");
			}

			// 4. 종료
			// 종료 순서 : 가장 마지막에 열어주었던 객체부터 역순부터 닫아줌
			if (psmt != null) {
				psmt.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) { // DB정보 확인
			System.out.println("sql 오류");
			e.printStackTrace();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Ex02_update {

	public static void main(String[] args) {
		Connection conn =null;
		PreparedStatement psmt = null;
		try { 
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String id = "hr";
			String pw = "hr";

			conn = DriverManager.getConnection(url, id, pw);
			if (conn != null) {
				System.out.println("연결 성공");
			} else {
				System.out.println("연결 실패");
			}
			
			String sql = "UPDATE MEM SET pw = 'AABB' WHERE id = '1111'";
			psmt = conn.prepareStatement(sql);
			
			// CRUD
			// C : create
			// R : Read
			// U : Update
			// D : Delete
			
			int cnt = psmt.executeUpdate();
			
			if(cnt > 0) {
				System.out.println("update 성공");
			}
			else {
				System.out.println("update 실패");
			}
			if (psmt != null) {
				psmt.close();
			}
			if (conn != null) {
				conn.close();
			}
			//executeUpdate() : 삽입, 삭제, 변경 때 사용 (insert, delete, update)
			//executeQuery : select(조회)
			
		} catch (SQLException e) { // DB정보 확인
			System.out.println("sql 오류");
			e.printStackTrace();
		}
		catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

	}

}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Ex03_delete {

	public static void main(String[] args) {
		Connection conn =null;
		PreparedStatement psmt = null;
		try { // try-catch : 예외 처리를 하기 위한 문법
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
			String id = "hr";
			String pw = "hr";

			conn = DriverManager.getConnection(url, id, pw);
			if (conn != null) {
				System.out.println("연결 성공");
			} else {
				System.out.println("연결 실패");
			}
			//SQL문 실행
			String sql = "DELETE from mem where id = '1111'";
			
			//SQL 전송
			psmt = conn.prepareStatement(sql);
			int cnt = psmt.executeUpdate();

			if (cnt > 0) {
				System.out.println("delete 성공");
			} else {
				System.out.println("delete 실패");
			}

			}
			catch(ClassNotFoundException e1) {
				System.out.println("드라이버오류");
				e1.printStackTrace();
			}catch (SQLException e) { // DB정보 확인
				e.printStackTrace();
			}finally {
				try {
					if (psmt != null) {
						psmt.close();
					}
					if (conn != null) {
						conn.close();
					}// DB정보 확인
				}
				catch(SQLException e) {
				e.printStackTrace();
				}
			}

	}

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

public class Ex04_Select {

	public static void main(String[] args) {
		// 필요한 객체를 선언
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;	// 쿼리의 결과를 담은 객체

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";

			conn = DriverManager.getConnection(url, db_id, db_pw);

			// SQL문 실행
			String sql = "SELECT * from MEM";
			psmt = conn.prepareStatement(sql);

			// Selet문일 경우에는 insert, update, delete 문과 다르게
			// 조회한 결과를 보여줘야 하기 때문에 새로운 통로 열기
			// ResultSet - Cursor
			// rs : 커서 객체
			rs = psmt.executeQuery();
			System.out.println("ID\tPW\tNAME\tAGE");

			while (rs.next() == true) {
				String id = rs.getString(1);
				String pw = rs.getString(2);
				String name = rs.getString(3);
				int age = rs.getInt(4);
				rs.next(); // 커서를 한칸 내리는 역할, Type : boolean
				System.out.printf("%s\t%s\t%s\t%d%n", id, pw, name, age);
				// %s : 문자열
				// %d : 정수
				// %f : 실수
				// %tH : 날짜/시간
			}

		} catch (ClassNotFoundException e) {
			System.out.println("로딩실패");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("DB연결 실패");
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}