2011-02-11 5 views
1

이 코드 집합에서 반환되는 값이 하나 뿐인 이유에 대해 정말 당황 스럽습니다. 내가 여기서하려고하는 것은 기본 키를 매개 변수로 가지는 모든 * sense_num * (기본 키가 아닌)을 쿼리하는 것입니다. 결과에는 2 개 이상의 sense_num이 포함되어야하므로 모든 sense_num 결과에서 각 요소를 int [] 배열에 저장하고 int 배열을 각각 반환하려고합니다. 예를 들어이 쿼리의 결과는 sense_num 172 & 173입니다. 둘 다 이미 배열에 있어야하지만 호출 한 함수를 테스트했을 때받은 값은 마지막 값인 173입니다.Java에서 ResultSet을 처리하고이를 int 배열로 변환하는 방법은 무엇입니까?

이걸로 나. 감사!

공공 INT [] getAllSenseID (INT의 primeID) {

int[] objects = {}; 
    String qry = "SELECT sense_num FROM cebuano_sense WHERE id_num = '" + primeID + "'"; 
    try { 
     DatabaseConn db = new DatabaseConn("cebuano_wsd"); 
     db.connect(); 
     db.query(qry); 
     ResultSet result = db.getResult(); 
     ResultSetMetaData data = db.getData(); 


     if (result.next() == true) { 

      java.sql.ResultSetMetaData rsmd = result.getMetaData(); 
      int colNo = rsmd.getColumnCount(); 
      result.beforeFirst(); 
      int row = 0; 
      System.out.println(colNo + "::> Column Number"); 

      while (result.next()) { 
       objects = new int[colNo + 1]; 

       int i = 0; 

// 객체 나는 그것을 테스트 할 때 [0] 모든 값을 가지고 있으며,이 마지막 // 하나를 받아 그 이유는 ... 어떻게 두 값을 모두 받거나 받습니까? 당신은 단지 당신이 가지고 마지막 행을 가질 수 있도록

   while (i < colNo) { 
        objects[i] = result.getInt(colNo); 

        //print to test 
        System.out.println(objects.length + " >> Count of Objects"); 
        System.out.println(i + " :: " + objects[i] + " >> result"); 
        i++; 
       } 

      } 
     } 
    } catch (SQLException ex) { 
     ex.printStackTrace(); 
    } catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 

    return objects; 
} 

답변

2

귀하의 라인

objects = new int[colNo + 1]; 

는 당신이 이전 행을 대체합니다.

각 행에 추가 할 List<int[]> 수 있습니다. COLNO이

1. 그래서 나는 당신의 객체 배열이 계산 행에 대응하기 위해 필요하다고 생각되므로 항상

+0

감사합니다. 이 제안에 감사드립니다. :) – khryz88

0

당신의 QRY는 테이블에서 하나 개의 컬럼을 선택하고, results.next 루프에서, 당신은 배열을 작성. 희망은 도움이된다 - MS.

+0

나는 루프와 객체 [i] = result.getInt (colno)를 저장해야했던 부분과 자신을 혼동했다 << 루프가 얼마나 많은지 상관없이 실제로 colNo는 1입니다. 나는 이런 상황을 믿습니다. , ArrayList를 얻는 것 || ArrayList 가 가장 잘 작동하고 배열로 변환 할 수 있습니다! :) 코멘트 주셔서 감사합니다, 정말 고마워. – khryz88

0

개체가 [0]이 결과 집합의 첫 번째 행이되고 객체 [1]이 두 번째 행이 될 것으로 예상되는 것처럼 보입니다. 실제로 수행하는 작업은 첫 번째 열을 개체에 넣는 것 [ 0], 객체 [1] 등의 두 번째 열과 모든 행이 이전 행을 덮어 씁니다. 쿼리에는 하나의 열만 있으므로 내부 루프가 실제로 필요하지 않습니다. ResultSet을 반복하고 각 행의 sense_num을 objects []의 다음 사용 가능한 요소에 넣기 만하면됩니다. 그러면 객체 []에는 내가 기대하는 바가 포함될 것입니다.

+0

그것이 내가 그런 일이 일어나길 바랐던 방법입니다. result.get (Int)의 포수로 ArrayList 을 넣으면 코드가 작동합니다! 나는 당신의 의견을 appreaciate! :) – khryz88

관련 문제