如何在Java中处理ResultSet并将其转换为int数组?

时间:2011-02-11 17:43:01

标签: java

我真的很困惑为什么这组代码只返回一个值。我在这里要做的是查询具有主键作为参数的所有* sense_num *(不是主键)。结果应包含2个或更多sense_num,因此在每个sense_num结果中,我尝试将每个元素存储在int []数组中并分别返回int数组。例如,该查询的结果是sense_num 172&它们都应该已经在数组中但是当我测试了调用函数时,它收到的是最后一个值,173。

我希望你能帮助我。谢谢!

public 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;

// object [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;
}

3 个答案:

答案 0 :(得分:2)

你的行

objects = new int[colNo + 1];

替换你以前的任何一行,所以你只有最后一行。

您可以为每行添加List<int[]>

答案 1 :(得分:0)

您的qry从表中选择一列,因此colNo始终为1.

所以我认为你的对象数组需要与行计数相对应,而在results.next循环中,你要填写数组。希望有所帮助, - MS。

答案 2 :(得分:0)

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