문준영
새벽 코딩
문준영
전체 방문자
오늘
어제
  • 분류 전체보기
    • 웹 개발
    • JAVA
      • 기본 문법 내용 정리
      • 함수 내용 정리
      • 쉽게 배우는 자바 프로그래밍 문제 풀이
    • HTML
      • HTML
      • CSS
      • 문제풀이
    • JavaScript
    • MYSQL
    • C
      • 기본 문법 내용 정리
      • 백준 알고리즘 (c언어)
      • 자료구조
    • Python
      • 참고 알고리즘
      • 기본 문법 내용 정리
      • 자료구조 내용 정리
      • 백준 알고리즘 (파이썬)
    • 깃허브
    • 멀티잇 풀스택

티스토리

hELLO · Designed By 정상우.
문준영

새벽 코딩

멀티잇 풀스택

8 week_5 JDBC

2023. 2. 9. 13:28
JDBC

Java DataBase Connectivity

자바 프로그램이 DB와 연결하여 데이터를 교환할수 있게 해주는 프로그래밍 인터페이스

 

JDBC 프로그래밍 순서

1. JDBC 드라이버 로드

public static void initConnection() { // 초기화
		try {
			Class.forName("com.mysql.cj.jdbc.Driver"); // JDBC 드라이버 로딩
			System.out.println("Driver Loading Success");
		} catch (ClassNotFoundException e) {
			System.out.println("DB Driver를 찾지 못했습니다");
			e.printStackTrace();}}
메서드명 설명
Class.forName("드라이버") 동적으로 JDBC 드라이브 클래스 로드

 

2. 데이터베이스에 연결

public static Connection getConnection() { // connection 객체를 반환
		Connection conn = null;
		try {// Connection 객체 생성
			conn = DriverManager.getConnection("jdbc:mysql://192.168.45.150:3306/mydb", "root", "1234");
			System.out.println("Connection Success");
		} catch (SQLException e) {
			System.out.println("db을 연결하지 못했습니다");
			e.printStackTrace();
		}
		return conn;
	}
메서드명 설명
DriverManager.getConnection(url, user, pwd) DB연결을 위한 Connection 객체 생성

3. SQL 실행을 위한 객체 생성

Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs=null;

4. SQL을 실행

  • SELECT
String sql="SELECT id,name,age,joindate"+" from user" +" where id=? "; //SELECT
  • INSERT
String sql ="INSERT INTO user(id,name,age,joindate)" + "values(?,?,?,now())"; //INSERT
  • UPDATE
String sql="UPDATE user"+" set id=?,name=?,age=?,joindate=now() "+" where id=? "; //UPDATE
  • DELETE
String sql="DELETE from user"+" where id=?"; //DELETE

 

5. SQL 실행결과를 받아서 처리

  • SELECT
try {
	conn=DBConnection.getConnection();
	psmt= conn.prepareStatement(sql);
    	psmt.setString(1, id); // ? 첫번 째 인자에 값(id) 넣기
			
	rs= psmt.executeQuery(); //select문만 query를 쓴다. 결과값을 rs에 저장
	if(rs.next()) { //결과값이 있을 때
		String _id=rs.getString("id");
		String _name=rs.getString("name");
		String _joindate=rs.getString("joindate");
		int _age=rs.getInt("age");
				
		user= new User(_id,_name,_age,_joindate);
		}
} catch (SQLException e) {
	e.printStackTrace();
	}
  • INSERT
try {
	conn = DBConnection.getConnection();

	psmt = conn.prepareStatement(sql);
	psmt.setString(1, id);
	psmt.setString(2, name);
	psmt.setInt(3,age);
			
	count = psmt.executeUpdate();
	System.out.println("성공적으로 추가되었습니다.");
			
} catch (SQLException e) {
	System.out.println("추가되지 않았습니다.");
	e.printStackTrace();
}
  • UPDATE
try {
	conn=DBConnection.getConnection();
	psmt= conn.prepareStatement(sql);
		
	psmt.setString(1, id);
	psmt.setString(2, name);
	psmt.setInt(3, age);
	psmt.setString(4, num);
			
	count= psmt.executeUpdate();
	if(count>0) { //결과값이 있을 때
		System.out.println("성공적으로 변경되었습니다.");
	}
} catch (SQLException e) {
	e.printStackTrace();
}
  • DELETE
try {
	conn=DBConnection.getConnection();
	psmt= conn.prepareStatement(sql);
	psmt.setString(1,id);
	psmt.setString(1, id);
	count= psmt.executeUpdate(); 
	if(count>0){ //결과값이 있을 때
		count = psmt.executeUpdate();
		System.out.println("성공적으로 삭제되었습니다.");
	}
} catch (SQLException e) {
	e.printStackTrace();
}

 

6. 객체 및 DB 연결 종료

public static void close(Connection conn, java.sql.Statement psmt, ResultSet rs) {
		try {
			if (conn != null) { // db의 후처리
				conn.close();
			}
			if (psmt != null) {
				psmt.close();
			}
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
  • try-catch문 이후 작성
finally {
	DBClose.close(conn,psmt,rs);
}

 

 

 

 

 java.sql 패키지의 주요 인터페이스

 java.sql.Driver

  • JDBC Driver 정보를 제공하는 인터페이스
  • DBMS와의 연결을 관리하는 객체를 리턴한다.

java.sql.Connection

  • 지정 DBMS와 연결을 수행해주는 인터페이스.
  • DBMS에 SQL을 전달할 객체를 리턴한다.

java.sql.Statement

  • SQL  query 문을 DB에 전송해주는 인터페이스
  • SQL을 MySQL 형식에 맞춰서 변환한 다음 서버에 보내는 일을 한다.
  • 서버가 보낸 결과를 다룰 객체를 리턴한다.
메서드 설명
executeQuery() SELECT 문에서만 실행
executeUpdate() INSERT, UPDATE, DELETE 명령문에 실행
executeBatch() 여러 개의 SQL을 실행

java.sql.PreparedStatement

  • SQL  query 문을 DB에 전송해주는 인터페이스
  • 기존 Statement와 달리 쿼리에 인자를 부여하고 처음 컴파일된 이후에는 컴파일을 수행하지 않는다.
  • 여러번 수행될때 속도가 빨라 Statement보다 PreparedStatement를 주로 사용
메서드명 설명
set[Type](nuber,value) PreparedStatement 객체에 지정된 SQL문에 포함하고 있는 바인딩 변수 설정

 

java.sql.ResultSet

  • DBMS 서버에서 SELECT를 실행한 후 생성된 결과를 가져오는 인터페이스
메서드 설명
boolean next()  서버에서 한 개의 레코드를 가져온다
get[Type](val) 서버에서 가져온 레코드의 컬럼 값을 가져온다.

 

 

 

 

'멀티잇 풀스택' 카테고리의 다른 글

9 week 게시판 실습  (0) 2023.02.15
8 week_6 MVC 패턴  (0) 2023.02.10
8 week_4 Ajax  (0) 2023.02.08
8 week_3 Java_HashMap  (0) 2023.02.08
8 week_2 JSP  (0) 2023.02.07
    '멀티잇 풀스택' 카테고리의 다른 글
    • 9 week 게시판 실습
    • 8 week_6 MVC 패턴
    • 8 week_4 Ajax
    • 8 week_3 Java_HashMap
    문준영
    문준영
    공부한 내용 정리!

    티스토리툴바