[26일차] JDBC 란

SOSO·2022년 5월 23일
0

학원

목록 보기
24/59
post-thumbnail

JDBC (Java Database Connectivity)

JDBC 란

JDBC란 자바를 이용하여 데이터베이스에 접근하여 각종 SQL문을 수행할 수 있도록 제공하는 API를 말한다.

JDBC를 이용한 데이터베이스 연결 방법

1 단계 : 드라이버를 로드 한다.
2 단계 : Connection 객체를 생성한다.
3 단계 : Statement 객체를 생성한다.
4 단계 : SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
5 단계 : 모든 객체를 닫는다.



JDBC 관련 클래스

Connection

데이터베이스와 어플리케이션을 연결하는 객체

DriverManager

DriverManager는 사용할 애플리케이션에 대해 사용 가능한 JDBC(Java Database Connectivity) 드라이버 세트를 관리한다

Connection을 생성하는 역할

SQLException

SQL Server에서 경고 또는 오류를 반환할 때 throw되는 예외

PreparedStatement

각각의 인수에대해 위치홀더을 사용하여 SQL문장을 정의할 수 있다

위치홀더는 물음표 '?'로 표현

ResultSet

SELECT문을 사용하여 얻어온 래코드 값들을 테이블의 형태로 갖는 객체

Connection 객체를 생성

package kr.s03.preparedstatement;

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

public class DBUtil {
	private static final String db_driver = "oracle.jdbc.OracleDriver";
	private static final String db_url = "jdbc:oracle:thin:@192.168.219.102:1521:xe";
	private static final String db_id = "c##user01";
	private static final String db_password = "1234";
	
	//Connection 객체 생성 및 반환
	public static Connection  getConnection() 
		throws ClassNotFoundException, SQLException {
			//JDBC 수행 1단계 : 드라이버 로드
			Class.forName(db_driver);
			//JDBC 수행 2단계 : Connection 객체 생성
			return DriverManager.getConnection(db_url,db_id,db_password);
		}
		
	
	public static void executeClose(ResultSet rs, PreparedStatement pstmt, Connection conn) {
		if(rs!=null)try {rs.close();}catch(SQLException e) {}
		if(pstmt!=null)try {pstmt.close();}catch(SQLException e) {}
		if(conn!=null)try {conn.close();}catch(SQLException e) {}
	}
}
	
Connection 객체가 생성되었습니다

Insert 문

package kr.s03.preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class InsertMain {
public static void main(String[] args) {
	Connection conn = null;
	PreparedStatement pstmt =null;
	String sql = null;
	
	try {
		//JDBC 수행 1,2단계
		conn = DBUtil.getConnection();
		
		//SQL문 작성
		sql = "INSERT INTO test1 (id,age) VALUES (?,?)";
		
		//JDBC 수행 3단계 : PreparedStatment 객체 생성
		pstmt = conn.prepareStatement(sql);
		        
		//?에 데이터를 바인딩
		pstmt.setString(1,"star"); //1번 ?에 데이터 전달
		pstmt.setInt(2, 50);   //2번 ?에 데이터 전달
		
		
		int count = pstmt.executeUpdate();
		
		//JDBC 수행 4단계 : SQL문을 실행해서 테이블에 행을 추가
		System.out.println(count +"개 행을 추가했습니다.");
		
		
		
	}catch(Exception e) {
		e.printStackTrace();
	}finally {
		//자원정리
		DBUtil.executeClose(null, pstmt, conn);
	}
}
}
0개 행을 수정했습니다.

DELETE 문

package kr.s03.preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class DeleteMain {
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt =null;
		String sql =null;
		
		try {
			//JDBC수행 1,2단계
			conn=DBUtil.getConnection();
			
			//SQL문 작성
			sql = "DELETE FROM test1 WHERE id=?";
			
			//JDBC수행 3단계
			pstmt = conn.prepareStatement(sql);
			//?에 데이터 바인딩
			pstmt.setString(1,"star");
			
			//JDBC수행 4단계 SQL문을 실행해서 테이블의 행을 삭제
			int count = pstmt.executeUpdate();
			System.out.println(count + "개 행을 삭제했습니다.");
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			//자원정리
			DBUtil.executeClose(null, pstmt, conn);
				
				
		}
	}
}
0개 행을 삭제했습니다.

SELECT 문

package kr.s03.preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SelectMain {
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		
		try {
			//JDBC 수행 1, 2단계
			conn = DBUtil.getConnection();
			
			//SQL문 작성
			sql = "SELECT * FROM test1";
			
			//JDBC 수행 3단계: preparedStatment 객체 생성
			pstmt = conn.prepareStatement(sql);
			
			//JDBC 수행 4단계 : SQL문을 실행해서 테이블로 부터 결과행들을 
			//               읽어들여 ResultSet에 담아서 반환
			rs = pstmt.executeQuery();
			System.out.println("ID\t나이");
			
			while(rs.next()) {
				
				System.out.print(rs.getString("id"));
				System.out.print("\t");
				System.out.print(rs.getInt("age"));
				System.out.print("\n");
			}
			
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			//자원정리
			DBUtil.executeClose(rs, pstmt, conn);
		}
	}

}
ID	나이
blue	40
he's	50
sky	50
she's	50

UPDATE 문

package kr.s03.preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class UpdateMain {
public static void main(String[] args) {
	Connection conn = null;
	PreparedStatement pstmt =null;
	String sql = null;
	
	try {
		//JDBC 수행 1,2단계
		conn = DBUtil.getConnection();
		
		//SQL문 작성
		sql = "UPDATE test1 SET age=? WHERE id=?";
		
		//JDBC 수행 3단계 : PreparedStatment 객체 생성
		pstmt = conn.prepareStatement(sql);
		        
		//?에 데이터를 바인딩
		pstmt.setInt(1, 19);   //1번 ?에 데이터 전달
		pstmt.setString(2,"star"); //2번 ?에 데이터 전달

		
		
		int count = pstmt.executeUpdate();
		
		//JDBC 수행 4단계 : SQL문을 실행해서 테이블에 행을 수정
		System.out.println(count +"개 행을 수정했습니다.");
		
		
		
	}catch(Exception e) {
		e.printStackTrace();
	}finally {
		//자원정리
		DBUtil.executeClose(null, pstmt, conn);
	}
}
}
0개 행을 수정했습니다.
profile
한다 열심히

0개의 댓글