开发者

How to deal with the ResultSet in Java and convert it to an Array of int?

开发者 https://www.devze.com 2023-02-09 20:01 出处:网络
I\'m really perplexed as to why there\'s only one value being returned by this set of codes. What I\'m trying to do here is to query all the *sense_num* (not primary key) that has the primary key as t

I'm really perplexed as to why there's only one value being returned by this set of codes. What I'm trying to do here is to query all the *sense_num* (not primary key) that has the primary key as the parameter. The result should contain 2 or more sense_num and so in every sense_num result, I try to store each element in an int[] array and return the int array respectively. For e.g the result from this query are sense_num 172 & 173. both of them should already be in the array but when i tested the calling function, what it has received is the last value, 173.

I hope you can he开发者_开发知识库lp me with this. Thanks!

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] has all the values when I tested it and that's why it only accepts the last //one... how do get or receive both values?

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


Your line

objects = new int[colNo + 1];

replaces any previous row you have, so you only have the last row you got.

You could have an List<int[]> which you add to for each row.


Your qry selects one column from the table, so colNo is always 1.

So I think your objects array needs to correspond to row count, and in the results.next loop, you fill out the array. Hope that helps, - MS.


It looks like you're expecting objects[0] to be the first row in your ResultSet, objects[1] to be the second row, etc. What you're actually doing is putting the first column in objects[0], the second column in objects[1], etc. and every row overwrites the previous one. Since your query only has one column, you don't really need the inner loop. Just loop over the ResultSet and put sense_num from each row into the next available element in objects[]. Then objects[] will contain what I think you are expecting.

0

精彩评论

暂无评论...
验证码 换一张
取 消