2012-05-23 4 views
0

JComboBox에 내 데이터베이스에서 수집 한 데이터를 채우는 방법이 있지만 데이터베이스에서 정보를 가져올 수있는 유일한 방법은 정렬. 그리고 프로그램을 완전히 컴파일하기 전에 배열을 object []로 변환해야합니다. 이 작업을 실제로 수행 할 방법이 있습니까? 아니면 이것이 긴 과정이 될 것입니까? 내 코드는 아래와 같습니다.Object를 사용하여 배열 반환 [] 메서드

public Object[] getId() { 
    Connection con; 
    Statement stmt; 
    ResultSet rs; 

    //Object[] returnId; 
    Array returnId; 
    try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con = DriverManager.getConnection("jdbc:odbc:collegesys","root","0blivi0n"); 

    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    rs = stmt.executeQuery("SELECT `id` FROM main"); 

    while(rs.next()) { 
     returnId = rs.getArray("id"); 
    } 

    con.close(); 
    } catch(Exception e) { 
    e.printStackTrace(); 
    } 
    return returnId.toObject(); 
} 

답변

1

이 시도 :

난 당신이 테이블 main의 모든 행에서 "id" 열의 값을 수집 할 것을 수집
return (Object[]) returnId.getArray(); 

. 코드는 체계적으로 진행되지 않습니다. 당신이 열 id에서 데이터 유형의 더 나은 아이디어가 있다면, 당신은 반환 형식에 대한 자세한 특정 할 수있다, 물론

public Object[] getId() { 
    Connection con; 
    Statement stmt; 
    ResultSet rs; 

    //Object[] returnId; 
    ArrayList<Object> returnId = new ArrayList<Object>(); 
    try { 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    con = DriverManager.getConnection("jdbc:odbc:collegesys","root","0blivi0n"); 

    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
    rs = stmt.executeQuery("SELECT `id` FROM main"); 

    while(rs.next()) { 
     returnId.add(rs.getObject("id")); 
    } 

    con.close(); 
    } catch(Exception e) { 
    e.printStackTrace(); 
    } 
    return returnId.toArray(new Object[returnId.size()]); 
} 

당신은 (예를 들어, String[]rs.getString("id")하거나 값을 얻을 방법 : 대신 시도 Integer[]rs.getInt("id")).

+0

좋아요,이 작업을 수행했습니다. 하지만 이제는 배열에서 초기화 오류가 발생합니다. 도대체 어떻게 초기화해야합니까? –

+1

@ Nathan - 문제는 코드에서 returnId에 할당되지 않은 상태로 'return' 문에 도달 할 수 있다는 것입니다. 당신은 당신의 논리를보고 재구성해야합니다. 나는 하나의 접근법을 보여주기 위해 나의 대답을 업데이트했다. –

관련 문제