【问题标题】:How to deal with the ResultSet in Java and convert it to an Array of int?如何处理 Java 中的 ResultSet 并将其转换为 int 数组?
【发布时间】:2011-02-13 15:56:24
【问题描述】:

我真的很困惑为什么这组代码只返回一个值。我在这里要做的是查询所有以主键为参数的*sense_num*(不是主键)。结果应该包含 2 个或更多 sense_num,因此在每个 sense_num 结果中,我尝试将每个元素存储在 int[] 数组中并分别返回 int 数组。例如,此查询的结果是 sense_num 172 和 173。它们都应该已经在数组中,但是当我测试调用函数时,它收到的是最后一个值,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] 在我测试它时具有所有值,这就是为什么它只接受最后一个 //one... 如何获取或接收这两个值?

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

【问题讨论】:

    标签: java


    【解决方案1】:

    你的线路

    objects = new int[colNo + 1];
    

    替换您拥有的任何前一行,因此您只有最后一行。

    您可以为每一行添加一个List&lt;int[]&gt;

    【讨论】:

    • 谢谢!它已经工作了,感谢您的建议! :)
    【解决方案2】:

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

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

    【讨论】:

    • 我确实将自己与必须循环和存储 object[i] = result.getInt(colno) || ArrayList 效果最好,我可以简单地将它转换为数组! :) 感谢您的评论,我真的很感激。
    【解决方案3】:

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

    【讨论】:

    • 这就是我希望它发生的方式。将 ArrayList 作为 result.get(Int) 的捕手使我的代码正常工作!我很欣赏你的评论! :)
    猜你喜欢
    • 2013-07-14
    • 2016-01-22
    • 2019-05-30
    • 2015-07-05
    • 1970-01-01
    • 2015-10-02
    • 2022-06-12
    • 2019-12-08
    • 1970-01-01
    相关资源
    最近更新 更多