웹개발 교육/Java

[40일] JDBC (8) - 테이블의 행의 갯수

2022. 9. 22. 11:01

테이블의 행의 갯수를 구하기 전에 DB 연동 및 반납 등의 사전 작업을 해보자

package jdbc0922;

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

public class Test01_selectCount {
	public static void main(String[] args) {
		// sungjuk 테이블의 행의 갯수를 출력하시오

		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";
			Class.forName(driver);
			con = DriverManager.getConnection(url, user, password);				
			System.out.println("오라클 DB 서버 연결 성공!!");
			
			StringBuilder sql = new StringBuilder();
			sql.append(" SELECT COUNT(*) AS cnt ");
			sql.append(" FROM sungjuk ");
			
		} 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) {}
		}//end
		
		System.out.println("END");
		
	}//main() end
}//class end

ResultSet은 SELECT문의 결과를 저장하는 객체이다. finish 블럭에서 자원을 반납해주는데 반납 순서는 열어준 순의 역순으로 해야 한다.

이제 SELECT문을 실행한 뒤 그 결과를 ResultSet인 rs에 저장하도록 해보자

try {
	String url = "jdbc:oracle:thin:@localhost:1521:xe";
	String user = "system";
	String password = "1234";
	String driver = "oracle.jdbc.driver.OracleDriver";
	Class.forName(driver);
	con = DriverManager.getConnection(url, user, password);				
	System.out.println("오라클 DB 서버 연결 성공!!");
	
	StringBuilder sql = new StringBuilder();
	sql.append(" SELECT COUNT(*) AS cnt ");
	sql.append(" FROM sungjuk ");
	
	pstmt = con.prepareStatement(sql.toString());
	rs = pstmt.executeQuery();  //select문 실행
	//cursor : 행을 가리키는 값. 이동할 수 있다
	if(rs.next()) {  //cursor가 있는지
		System.out.println("자료있음~~");
	} else {
		System.out.println("자료없음!!");
	}//if end
	
} catch (Exception e) {

SELECT문을 실행시켜 저장하도록 하는 메소드는 executeQuery이다. next는 다음 행으로 커서를 옮기고 값이 있으면 true 없으면 false를 반환한다.

 

이제 조회를 하여 콘솔창에 출력해보자. 우리는 원하는 칼럼을 조회할 때 select 칼럼1, 칼럼2 ... 이렇게 작성하였고 select cnt ... 이렇게 별칭을 부여하여 조회하기도 했다.

 

이렇게 칼럼 순서로 접근할 수도 있고, 칼럼명으로 접근할 수도 있다.

package jdbc0922;

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

public class Test01_selectCount {

	public static void main(String[] args) {
		// sungjuk 테이블의 행의 갯수를 출력하시오

		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;  //select문을 실행한 결과(논리적테이블)를 저장
		
		try {
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "system";
			String password = "1234";
			String driver = "oracle.jdbc.driver.OracleDriver";
			Class.forName(driver);
			con = DriverManager.getConnection(url, user, password);				
			System.out.println("오라클 DB 서버 연결 성공!!");
			
			StringBuilder sql = new StringBuilder();
			sql.append(" SELECT COUNT(*) AS cnt ");
			sql.append(" FROM sungjuk ");
			
			pstmt = con.prepareStatement(sql.toString());
			rs = pstmt.executeQuery();  //select문 실행
			//cursor : 행을 가리키는 값. 이동할 수 있다
			if(rs.next()) {  //cursor가 있는지
				System.out.println("자료있음~~");
				//1)칼럼 순서 접근
				//->select 칼럼1, 칼럼2, 칼럼3 ...
				//->자료형을 일치하면서 가져온다
				System.out.println("전체 행 갯수 : " + rs.getInt(1));  //1번칼럼
				
				//2)칼럼명으로 접근
				//->select cnt ...
				System.out.println("전체 행 갯수 : " + rs.getInt("cnt"));
			} else {
				System.out.println("자료없음!!");
			}//if end 
			
		} 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) {}
		}//end
		
		System.out.println("END");
		
	}//main() end

}//class end

get~()는 ResultSet에 저장된 select된 테이블에서 값을 가져오는 메소드이다. 가져오는 자료형과 일치를 시켜줘야 한다. int값을 가져올때는 getInt, String값을 가져올 때는 getString을 사용한다.

'웹개발 교육 > Java' 카테고리의 다른 글

[40일] JDBC (10) - 전체 행 조회  (0) 2022.09.22
[40일] JDBC (9) - 한 행 조회  (0) 2022.09.22
[39일] JDBC (7) - 변수를 이용한 테이블 행 수정  (0) 2022.09.21
[39일] JDBC (6) - 변수를 이용한 테이블 행 추가  (0) 2022.09.21
[39일] JDBC (5) - 테이블 행 삭제  (0) 2022.09.21
'웹개발 교육/Java' 카테고리의 다른 글
  • [40일] JDBC (10) - 전체 행 조회
  • [40일] JDBC (9) - 한 행 조회
  • [39일] JDBC (7) - 변수를 이용한 테이블 행 수정
  • [39일] JDBC (6) - 변수를 이용한 테이블 행 추가
ewok
ewok
기록장ewok 님의 블로그입니다.
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 노랭이
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • base
  • 버전 관리
  • SQLD
  • merge commit
  • sqld 합격
  • 생성자
  • GIT
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • sqld 자격증
  • git bash
  • branch
  • this
  • 브랜치

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[40일] JDBC (8) - 테이블의 행의 갯수
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.