java - 将 ResultSet 转换为 int 数组

标签 java arrays resultset

我正在尝试将 ResultSet 转换为 int 数组,因为我的方法返回 int[]:

public static int[] GetPathIDsFromDB (String Dbnum, int objectid) throws SQLException{
    String selectSQL = "SELECT ID FROM " + Dbnum + ".tabName where ObjectID=?";
    dbConnection = getDBConnection();
    preparedStatement = dbConnection.prepareStatement(selectSQL);
    preparedStatement.setInt(1 , objectid);
    ResultSet rs = preparedStatement.executeQuery();  
    //int [] rsIDs = new rs.count;
    int [] rsIDs = null;
    while (rs.next()) {
        rsIDs=rs.getInt(1); // the error int cannot be converted to int[]
    }
    return rsIDs;
}

如何转换它?

最佳答案

就我个人而言,我会将它们放入一个列表中,然后最后转换为数组。

List<Integer> rsIds = new ArrayList<Integer>();
while (rs.next()) {
  rsIds.add(rs.getInt(1));
}
return rsIds.toArray(new Integer[](rsIds.size());

它应该通过自动装箱自动将 Integer[] 转换为 int[]。

<小时/>

看来我是个白痴,而且这行不通,这就是我会这样做的:

rs.last();
int[] rsIds = new int[rs.getRow()];
rs.beforeFirst();
int counter = 0;
while (rs.next()) {
  rsIds[counter] = rs.getInt(1);
  counter++;
}

如果 ResultSet 的类型为 TYPE_FORWARD_ONLY,则此方法将不起作用,您需要更改滚动类型才能使其工作。

关于java - 将 ResultSet 转换为 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160093/

相关文章:

java - 如果存在两条以上记录,则从数据库获取数据

java - 为什么我的情况下服务没有启动?

java - 用可变的纳秒数解析 Java 中的时间戳字符串

java - 如何从 List<Object> 中检索每个值

java jdbc连接-结果集输出问题

java - (JAVA/SQL) ResultSet 在应该检索更多行时仅从 MySQL 检索一行

java - HTTP 状态 415 - 使用 Ajax 将 Json 数据发布到 Spring MVC 4 还使用了 Spring Security

java - 为什么我被告知不能从静态上下文引用非静态变量?

php比较/区分一个数组和一个对象数组

c - 在c中循环整数数组时出错