JAVA) JDBC 동작 순서 및 DB 연결( 소스코드 포함 ) - 최종
본문 바로가기
programming/Java

JAVA) JDBC 동작 순서 및 DB 연결( 소스코드 포함 ) - 최종

by 코딩하는 핑가 2021. 1. 6.
반응형

* 이 포스팅은 kslee7746.tistory.com/의 포스팅을 학습한 뒤 추가로 공부한 후 재정리한 글입니다.

* 2차 가공 및 재배포를 금지합니다.

* 오탈자 및 잘못된 내용은 댓글달아주세요.

* 개념 설명은 아래의 링크에서 확인해주세요.

2020/12/31 - [programming language/Java] - JAVA) JDBC 동작 순서 및 SQL 전송에서 Statement, PreparedStatement 차이점 ( 소스코드 포함 )

1. JDBC 소스코드

package practice;

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

public class TestJDBC {

	public static void main(String[] args) {
		String ip		= "본인 ip";
		int port		= 해당 포트;
		String database	= "DB명";
		String user		= "USER명";
		String password = "PWD";
		

		String DRIVER_NAME = "DB DRIVER_NAME";
		String JDBC_URL = "jdbc:해당 DB:thin:@" + ip + ":" + port + ":" + database;
		String sql = "SELECT * FROM TEST";
		
		Connection conn = null;
		Statement stmt 	= null; // DB와 소통하는 통로
		ResultSet rs	= null; // 결과받아서 처리할 때
		
		try {
			Class.forName(DRIVER_NAME);
			System.out.println("드라이버 로드 성공");			
			
			conn = DriverManager.getConnection(JDBC_URL, user, password);
			System.out.println("데이터베이스 접속 성공");
			
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql); // 쿼리 실행 후 데이터들이 rs 저장
			
			while(rs.next()) { // 한 건 씩 처리
            	// 아래는 예시 TEST 테이블 컬럼 (id, name)
				int id = rs.getInt(1); // 첫번째 컬럼 조회
				String name = rs.getString("name"); // 컬럼 이름 지정 가능
				System.out.println(id+ "\t" + name);		
			}	
			
		} catch (ClassNotFoundException e) {
			System.out.println("driver load 실패");
			e.printStackTrace();
			
		} catch (SQLException e) {
			System.out.println("DB 연결 실패");
			e.printStackTrace();
		}
		finally {
			try {
				if(rs != null) rs.close();
				if(stmt != null) stmt.close();
				if(conn != null) conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
				
		}

	}

}

 

* 이전 포스팅과 다른점

- finally 사용 유무

- 컬럼 목록 보여주기

- disconnect 방법

 

- DB 연결 시 rs.close(), stmt.close(), conn.close()는 매우 중요한 코드다.

- 그래서 이전 포스팅에서처럼 disconnect를 따로 빼지 않고 finally로 무조건 실행되게 수정함

( 이부분은 JNDI에서 아주 중요 )

- 컬럼 목록 보여주는 것도 getColumnCount()로 컬럼 갯수 반환해서 rs.getObject()로 보여주는 것이 아닌 getInt, getString으로 바로 가져오도록 함

반응형

댓글