JDBC-Select_avg

임재헌·2023년 3월 28일

JDBC

목록 보기
10/13
package jdbc0328;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.print.DocFlavor.STRING;

public class Test01_selectavg {

	public static void main(String[] args) {
		
		//문제. 주소가 서울인 행들의 국영수 평균값을 구하시오
		String addr="Seoul";
		
		Connection con =null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;  
		
		try {
			String url="jdbc:oracle:thin:@localhost:1521:xe";
			String user="system";
			String password="1234";
			String driver ="oracle.jdbc.driver.OracleDriver"; //ojdbc8.jar
			Class.forName(driver);
			con=DriverManager.getConnection(url, user, password);
			System.out.println("오라클 DB연결 성공");
			
					
			StringBuilder sql= new StringBuilder();
			sql.append("select round(avg(kor),2) as avg_kor, round(avg(eng),2)avg_eng, round(avg(mat),2) avg_mat ");
			sql.append("from sungjuk ");
			sql.append("where addr=? ");
			
			pstmt= con.prepareStatement(sql.toString());
			pstmt.setString(1, addr);	
			
			rs =pstmt.executeQuery();
			
			if(rs.next()) {		
				System.out.println("자료가 존재함");
				//1.칼럼 순서 접근
				  System.out.printf("국어평균: %.2f\n",rs.getDouble(1));
				  System.out.printf("영어평균: %.2f\n",rs.getDouble(2));
				  System.out.printf("수학평균: %.2f\n",rs.getDouble(3));
				//2.칼럼명 접근
				  System.out.printf("국어평균: %.2f\n",rs.getDouble("avg_kor"));
				  System.out.printf("영어평균: %.2f\n",rs.getDouble("avg_eng"));
				  System.out.printf("수학평균: %.2f\n",rs.getDouble("avg_mat"));
				  
				
			}else {
				System.out.println("자료가 없음");
			}
						
			
		}catch (Exception e) {
			System.out.println("오라클 DB연결 실패:"+ e);
			
		}finally {
			try {
				if (rs!=null) {
					rs.close();
				}
				
			} catch (Exception e) {	}
			
			try {
				if (pstmt!=null) {
					pstmt.close();
				}
				
			} catch (Exception e) {	}
			
			try {
				if (con!=null) {
					con.close();
				}	
			} catch (Exception e) {}	
		}	
				
	}
}

유의사항

행을 만들어 조회하는 경우 테이블에서는 null도 값이 존재하는것으로 취급한다.

-> String addr 변수에 테이블에 없는 값을 넣어도 테이블에 값이 존재하는것으로 취급하기에
nvl함수를 활용하면 null값을 처리 가능하다

0개의 댓글