테이블의 행의 갯수를 구하기 전에 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 |