ResultSet到Java中的Integer数组

时间:2012-12-06 15:50:04

标签: java sql arrays integer resultset

如何将ResultSet转换为Integer数组? 我真的需要一个Integer数组。没有列表或类似的东西。

ResultSet rs = sqlite.query("SELECT ores FROM testtable WHERE nicknames='"+"testname"+"';");

“ores”包含由空格分隔的8个整数:10 20 30 40 50 60 70 80

编辑: “ores”存储为VARCHAR

4 个答案:

答案 0 :(得分:3)

错误的代码。我推荐一个PreparedStatement:

PreparedStatement ps = connection.prepareStatement("SELECT ores FROM testtable WHERE nicknames= ?");
ps.setString(1, nickname);
ResultSet rs = ps.executeQuery();
List<Integer> values = new ArrayList<Integer>();
while (rs.next()) {
    String ores = rs.getString("ores");
    String [] tokens = ores.split("\\s+");
    for (int i = 0; i < tokens.length; ++i) {
        values.add(Integer.valueOf(tokens[i]));
    }
}

答案 1 :(得分:2)

ResultSet是yourr查询的结果,如果要将其转换为ArrayList或简单的Integer数组,则可以遍历ResulstSet并将所有非null Object添加到ArrayList或数组中。这是一个简单的解决方案......

答案 2 :(得分:0)

Vector<Integer> ores = new Vector<Integer>();
rs.beforeFirst();
while(rs.next()){ores.add(rs.getInt(1));}
Integer[] vals = ores.toArray(new Integer[0]);

答案 3 :(得分:-2)

可能是这样的:

rs.last(); 
rowcnt = myResultSet.getRow(); // get row no.
rs.beforeFirst();

int i = 0;  
Integer[] options = new Integer[rowcnt];  
while (rs.next()) {  
  options[i] = Integer.parseInt(rs.getString(i));  
  i++;  
}