DB/Oracle

[JDBC] Resultset을 이용한 행 갯수 구하기.

벨포트조던 2017. 3. 29.
반응형





[JDBC] Resultset을 이용한 행 갯수 구하기.

Major/Java 2010.11.24 20:25


ResultSet에는 row갯수를 반환하는 메소드가 존재하지 않는다. 뭐 만든놈 맘이겠지만..


대신 ResultSetMetaData는 행갯수를 반환하는 메소드가 존재한다. 일부러 그런건지는 모르겠는데..


디비쪽작업을 하다보면 행갯수는.. 정말 많이 필요하다.


방법은 3가지이다.


첫 번째는 쿼리를 이용하는 방법이다. 뭐 간단하게 카운트 키워드를 사용하면 된다.


select count(*) from talbe_name; 이렇게..


대충 소스를 써보자면..


public class test

  public static void main(String[] args) throws Exception

 {

        String jdbcUrl = "jdbc:mysql://localhost:3306/"+[디비이름];

        String id = [로긴아이디];

        String pass= [비밀번호];

        

        Class.forName("com.mysql.jdbc.Driver");

        Connection conn = DriverManager.getConnection(jdbcUrl,Id,pass);        

        Statement stmt = conn.createStatement();

     

        int rowCnt = 0;

         

        ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM test_tbl");

        if(rs.next()) rowcount = rs.getInt(1);

        System.out.println("Total rows : " + rowCnt);

  }

}


이정도..?




두 번째는 ResultSet의 메소드를 이용하는 방법이다.


셋의 끝으로 점프 후에 행 개수를 세고 다시 처음으로 점프~


public class test

  public static void main(String[] args) throws Exception

 {

        String jdbcUrl = "jdbc:mysql://localhost:3306/"+[디비이름];

        String id = [로긴아이디];

        String pass= [비밀번호];

        

        Class.forName("com.mysql.jdbc.Driver");

        Connection conn = DriverManager.getConnection(jdbcUrl,id,pass);        

        Statement stmt = conn.createStatement();


        int rowCnt = 0;

     

        ResultSet rs = stmt.executeQuery("SELECT * FROM test_tbl");

        rs.last();      

        int rowcount = rs.getRow();

        rs.beforeFirst();


        System.out.println("Total rows : " + rowCnt);          

  }

}




마지막 방법은 메타데이터를 이용하는 방법이다.


걍 객체하나 선언해서 메소드 호출하면 끝이다.


ResultSetMetaData rsmd rsmd=null;


rsmd=rs.getMetaData();


int rowCnt = rsmd.getColumnCount();


참 쉽죠잉~!




출처: http://lunaticlobelia.tistory.com/117 [Be as lunatic as ever.]


출처: http://lunaticlobelia.tistory.com/117 [Be as lunatic as ever.]


출처: http://lunaticlobelia.tistory.com/117 [Be as lunatic as ever.]

반응형

댓글