6-2. JDBC

zhyun·2020년 9월 29일
0

HighJava

목록 보기
53/67

<2020.09.29>
고급자바 '6-1.네트워크'하기 전에 진행

JDBC

  • java database connected
  • JDBCTest 폴더 만들고 외부 자르 파일 사용 방식
    폴더 선택 alt+enter -> java build path -> Add_External JARs..선택
    -> D:\C_Lib\ibatis -> ojdbc6.jar 추가

JDBC를 이용한 데이터베이스 처리 순서

  • 순서
    : JDBC드라이버 로딩 -> 해당DB에 접속 -> 질의(SQL명령을 수행)
    -> 질의 결과를 받아서 처리한다. -> 종료(자원반납)
  1. JDBC 드라이버 로딩 (오라클 기준)
    => BuildPath에 잘 잡혀있는지 확인
    => JDBC드라이버는 DB를 만든 회사에서 제공
    Class.forName("oracle.jdbc.driver.OracleDriver");

  2. 접속하기 : 접속이 성공하면 Connection 객체 생성
    => 접속요청, 해당 커넥션에 관련된 객체를 리턴
    DriverManager.getConnection()메서드 이용

  3. 질의
    : Statement객체 또는 PreparedStatement객체를 이용하여
    'SQL문장'실행

  4. 결과
    : SQL문이 select일 경우 => ResultSet객체가 만들어진다.
    : SQL문이 insert, update, delete일 경우 => 정수값을 반환

예시

6_1.JDBCTest // T01_JdbcTest

Connection conn = null; // 드라이버 로딩
Statement stmt = null; // 질의 -> sql문장 실행
ResultSet rs = null;// 쿼리문이 select일 경우 실행

  • 드라이버 로딩
    Class.forName("oracle.jdbc.driver.OracleDriver");

    • String url = "jdbc:oracle:thin:@localhost:1521/xe";
    • String userId = "zhyun";
    • String password = "java";
      conn = DriverManager.getConnection(url,userId,password);
  • 질의
    stmt = conn.createStatement();
    String sql = "블라라라라라";

  • 결과
    rs = stmt.executeQuery(sql);
    while(rs.next()){
    rs.get()~~~
    }

public class T01_JdbcTest {
	public static void main(String[] args) {
		//DB작업에 필요한 객체변수 선언
		Connection conn = null; //드라이버 로딩
		Statement stmt = null; // 질의 -> sql문장 실행
		ResultSet rs = null; //쿼리문이 select일 경우에 사용됨
		
		try {
			
			//1. 드라이버 로딩(옵션) : 반드시해야되는건아님
			//클래스 객체가 리턴됨
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			//2. DB접속 (Connection객체 생성)
			String url = "jdbc:oracle:thin:@localhost:1521/xe";
			String userId = "zhyun";
			String password = "java";
			conn = DriverManager.getConnection(url, userId, password);
			
			//3. Statement객체 생성 => Connection객체를 이용한다.
			stmt = conn.createStatement();
			
			//4. SQL문을 Statement객체를 이용하여 실행하고 실행결과를 ResultSet에 저장함.
			String sql = "select * from lprod";
			rs = stmt.executeQuery(sql); 
			/**
			 * SQL문이 select일 경우에는 executeQuery()메서드 호출하고,
			 * insert, update, delete일 경우에는 executeUpdate()메서드 호출함.
			 */
			
			//5.ResultSet 객체에 저장되어 있는 자료를 반복문과 next()메서드를 
			//  이용하여 차례로 읽어와 처리한다.
			System.out.println("실행한 쿼리문 : "+sql);
			System.out.println("=== 쿼리문 실행 결과 ===");
			
			// rs.next() => ResultSet객체의 데이터를 가리키는 포인터를
			//              다음 레코드로 이동시키고 그 곳에 자료가 있으면 
			//              true, 없으면 false를 반환한다. 
			while(rs.next()) {
				//컬럼의 자료를 가져오는 방법
				//방법1) rs.get자료형 이름("컬럼명")
				//방법2) rs.get자료형 이름("컬럼번호") => 컬럼번호는 1부터 시작
//				System.out.println("lprod_id : "+ rs.getInt("lprod_id"));
				System.out.println("lprod_id : "+ rs.getInt(1)); // 컬럼숫자로 대체해도 가능
				System.out.println("lprod_gu : "+ rs.getString("lprod_gu"));
				System.out.println("lprod_nm : "+ rs.getString("lprod_nm"));
				System.out.println("----------------------------------------");
			}
			System.out.println("출력 끝...");
			
		} catch (SQLException ex) {
			ex.printStackTrace();
		}catch(ClassNotFoundException ex) {
			ex.printStackTrace();
		}finally {
			//6. 종료(사용했던 자원을 모두 반납한다.)
			if(rs!=null) try {rs.close();}catch(SQLException ex) {}
			if(stmt!=null) try {stmt.close();}catch(SQLException ex) {}
			if(conn!=null) try {conn.close();}catch(SQLException ex) {}
		}
	}
}   
profile
HI :)

0개의 댓글