자바 일반배열을 통해 db 데이터를 출력하려면

조회수 3742회

arraylist 가 아닌 일반 배열을 통해 출력하려고 하는데..

도저히 방법을 모르겠네요...

힌트라도 부탁드립니다..ㅜㅜ

package inosys.db; 


import java.lang.reflect.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class DbConnection {// 클래스명 선언 , 클래스명의 첫글자 대문자

    public static void main(String[] args) {

        // finally 영역에서 사용해야 되므로 try 영역 외부에서 선언
        Connection conn = null; // DB 접속처리
        Statement stmt = null; // sql 실행
        ResultSet rs = null; // 레코드 탐색

        String url = "jdbc:oracle:thin:@localhost:1522:orcl";
        String userid = "test3";
        String userpw = "1234";
        String sql = "SELECT * FROM member "; //


        int row = rs.getRow();
String[] strArray = new String[row];        

if(rs.next()) {
    for(int i=0; rs.next(); i++){
        strArray[i] = rs.getString("");
    }
}


        try {
            Class.forName("oracle.jdbc.driver.OracleDriver"); // 드라이버 연결
            // getConnection(연결문자열,아이디,비밀번호)
            conn = DriverManager.getConnection(url, userid, userpw);
            stmt = conn.createStatement();// sql 실행 객체
            // select query를 실행한 결과가 결과셋에 전달됨
            rs = stmt.executeQuery(sql);
            // select 시 executeQuery
            // select가 아닐 때 - executeUpdate();

            while (rs.next()) {
                JobBean bean = new JobBean(); // jobBean 객체 생성
                bean.setId(rs.getString("ID")); //rs.get으로 Id 데이터 가져오기
                bean.setName(rs.getString("name")); //rs.get으로 name 데이터 가져오기
                bean.setPasswd(rs.getString("passwd")); //rs.get으로 passwd 데이터 가져오기
                bean.setAddress(rs.getString("address")); //rs.get으로 address 데이터 가져오기
            }

            String[] arr = new String[jobList.size()];
            int size=0;
            for (int i = 0; i < arr.length ; i++) { //반복문으로 출력
                System.out.println("아이디:" + get(i).getId());
                System.out.println("이름:" + get(i).getName());
                System.out.println("비밀번호:" + get(i).getPasswd());
                System.out.println("지역:" + get(i).getAddress());
            }
        } catch (Exception e) {
            System.out.println("SQL Error:" + e.getMessage());
        } finally { // 객체 생성한 역순으로 종료(객체 수와 동일하게 close)
            try {
                if (rs != null)
                    rs.close();
                if (stmt != null)
                    stmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } // catch 종료
        }// try 종료
    } // 메인메소드 종료
}

1 답변

  • 기본문제입니다.

    질문자가 어려워하는 이유는 배열은 정적인지라 사이즈를 지정해야 된다는 것을 알고 있습니다.

    row수를 얻는 방법이 질문일겁니다.

    resutset에 보면 last 메소드가 있습니다. 마지막항목으로 커서를 옮기는겁니다. last 호출후 getRow로 카운트를 얻고 beforeFirst 매소드로 다시 위치를 돌려줍니다.

    이렇게 하면 원하는 바를 할 수 있을 겁니다.

    • 무슨말인지를.....잘 모르겠어요ㅠㅠ 알 수 없는 사용자 2019.5.17 09:54
    • 배열을 동적으로 만들어서 사이즈를 지정하지 않아도 자동으로 추가되도록 하고 싶은데 일단 출력자체를 어떻게해야되는지 감이 안오네요.. 알 수 없는 사용자 2019.5.17 10:11
    • 베열을 동적같이 구현한 것이 ArrayList 입니다. ArrayList 소스를 보세요. 정영훈 2019.5.17 10:21
    • 아...그런거군요...그럼 그냥 일반배열을 통해서 출력하려고 할땐 배열선언하고 반복문에 어떻게 작성해야되나요?? 알 수 없는 사용자 2019.5.17 10:50
    • 배열은 정적으로밖에 선언이 안됩니다. JobBean[] strArray = new JobBean[row 수]; 이렇게 해야 합니다. row수를 꼭 알아야 합니다. 자바로 코딩시 array 는 되도록 사용하지 마시기 바랍니다. List 로 하세요. 어차피 ArrayList 는 내부적으로 array 를 사용합니다. 정영훈 2019.5.17 12:24
    • 그리고 코드를 보니까...이제 시작하는 듯 한데요...책한권(java, jdbc 튜터리얼)을 구입해서 1독 하세요. 정영훈 2019.5.17 12:42
    • 네네 책은 보려고 구매했는데 아직 전부 읽지 못해서 그리고 ArrayList 로 출력 끝냈는데 일반배열로 다시 출력해보라고해서...진행해보는거에요 알 수 없는 사용자 2019.5.17 12:52
    • ArrayList 로 작성한 버전 올려주세요. 몇줄만 수정하면 됩니다. 정영훈 2019.5.17 12:53

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)