2011-02-11 151 views
1

我真的很困惑,为什么只有一个值被这组代码返回。我在这里要做的是查询所有以主键为参数的* sense_num *(不是主键)。结果应该包含2个或更多的sense_num,所以在每个sense_num结果中,我尝试将每个元素存储在一个int []数组中,并分别返回int数组。例如,来自这个查询的结果是sense_num 172 & 173.它们都应该已经在阵列中,但是当我测试调用函数时,它收到的是最后一个值,即173.如何处理Java中的ResultSet并将其转换为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[]>

+0

谢谢!它已经工作了,谢谢你的建议! :) – khryz88 2011-02-12 02:25:56

0

你QRY选择从表一列,所以colNo始终为1

因此,我认为你的对象数组需要对应于行数,并在results.next循环,您填写的阵列。希望有所帮助, - MS。

+0

我搞混了我的自我与我不得不循环和存储对象的部分[i] = result.getInt(colno)<<无论它需要多少循环,colNo实际上是1.我相信在这样的情况下,得到ArrayList || ArrayList 效果最好,我可以简单地将其转换为数组! :)感谢评论,我真的很感激它。 – khryz88 2011-02-12 02:33:34

0

它看起来像你期待的对象[0]是你的结果集中的第一行,对象[1]是第二行等等。你实际做的是把第一列放在对象中[ 0],对象[1]等中的第二列以及每一行都会覆盖前一个。由于您的查询只有一列,因此您并不需要内部循环。只需遍历ResultSet并将每行的sense_num放入对象[]中的下一个可用元素中即可。然后对象[]将包含我认为你期待的内容。

+0

这就是我希望它发生的方式。将ArrayList 作为result.get(Int)的捕获器使我的代码正常工作!我appreaciate您的评论! :) – khryz88 2011-02-12 02:28:06