본문 바로가기
DB/Code

CODE [day_02] DB / 01. JDBC - SELECT, WHERE | Oracle DB 와 java 어플리케이션 연동 테스트

by 파프리카_ 2020. 8. 6.
728x90
반응형

JDBC 프로그래밍 개발 단계

 

1. 데이터베이스 연동을 위한 jdbc driver loading

2. Connection

3. SQL 정의 후, PreparedStatement 생성

4. SQL 실행 executeQuery()

5. ResultSet : next(): boolean | getString() or getInt()

6. close


Oracle DB와 연동하는 자바 어플리케이션 테스트

 

OracleDriver는 JRE System Library내에 있다

 

SELECT 구문을 실행해 결과를 조회하여 출력하는 예제

package step1;

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

public class TestJDBC1 {
	public static void main(String[] args) {
		String driver = "oracle.jdbc.OracleDriver";
		String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		try {
			//1. 데이터베이스 연동을 위한 jdbc driver loading
			Class.forName(driver);
			System.out.println("Oracle Driver loading OK ! ");
			
			//2. Connection
			Connection con = DriverManager.getConnection(dbUrl, "scott", "tiger");
			System.out.println("DB Connecting OK! --> " + con);
			
			//3. SQL 정의 후, PreparedStatement 생성
			String sql = "SELECT id, password, name, address FROM member";
			PreparedStatement pstmp = con.prepareStatement(sql);
			
			//4. SQL 실행 executeQuery()
			ResultSet rs = pstmp.executeQuery();
			
			//5. ResultSet : next(): boolean | getString() or getInt()
			while(rs.next()) {  //next(): 한 행씩 읽어옴 - 결과행이 있을때까지 반환
				// SQL의 column의 인덱스는 1부터 읽는다
				String id = rs.getString(1); //getString(column index or column name)
				String password = rs.getString(2); // 두번쨰 컬럼 = password
				String name = rs.getString(3);
				String address = rs.getString(4);
				System.out.println(id + " " + password + " " +  name +  " " + address);
				/* 출력값 : 
				 * java 1234 아이유 판교 
				 * king 1232 데이빗 용인 
				 * mybatis di 스톤 LA 
				 * A 1313 옹성우 null
				 * spring aop 고슬링 LA
				 */
			}
			
			//6. close : 역순으로 close
			rs.close();
			pstmp.close();
			con.close();

		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
	}	
}

 

SELECT 조회 시 조건절 WHERE 을 이용해 조회

package step2;

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

public class TestJDBC2 {
	public static void main(String[] args) {
		String driver = "oracle.jdbc.OracleDriver";
		String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		try {
			//1. jdbc driver loading
			Class.forName(driver);
			
			//2. Connection
			Connection con = DriverManager.getConnection(dbUrl, "scott", "tiger");
			
			//3. SQL문 정의 - WHERE 조건 추가
			String address = "LA";
			String name = "스톤";
			String sql = "SELECT id, name FROM member WHERE address=? AND name=?";
			
			//4. PreparedStatement 생성
			PreparedStatement pstmt = con.prepareStatement(sql);
			
			//5. SQL문 완성 - WHERE 조건에 변수 할당
			// 1은 첫번째 물음표를 의미한다. ? 에 변수정보 할당
			pstmt.setNString(1,  address);
			pstmt.setNString(2,  name);
			
			//6. SQL 실행 executeQuery() 및 ResultSet에 할당
			ResultSet rs = pstmt.executeQuery();
			
			//7. 읽어오기
			while(rs.next()) {
				//getString(column index) or getString(ColumnLabel)
				System.out.println(rs.getString(1) +  " " + rs.getString(2));
				System.out.println(rs.getString("ID") +  " " + rs.getString("NAME"));
				/* 출력값:
				 * mybatis 스톤 
				 * mybatis 스톤 
				 */
			}
			
			//8. close
			rs.close();
			pstmt.close();
			con.close();
			
		}catch (ClassNotFoundException e) {
			e.printStackTrace();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}
728x90
반응형