访问两个循环之外的字符串数组

时间:2013-06-12 15:54:21

标签: java database arrays loops derby

我在嵌套在for循环中的while循环内创建了一个字符串数组。这与在Derby中从一列字符串创建数组有关,但为了简单起见,我将省略一些内容。

我没有提供完整代码的原因是因为问题非常具体。我对数据库,结果集,语句或查询没有任何问题。它只是在两个循环之外访问数组。

//in the class, 
private int rowCount; //Count of the rows in my column of strings
public String stringArray[];


//in the method I am using
public void myMethod() { 
    rowCount = 4; //In my code it actually counts it, lets say its four though.
    stringArray = new stringArray[rowCount]; //set  
    for (int i = 0; i < rowCount; i++) {
         while (rs.next()/*rs is simply a result set of a statement executeQuery to select the correct table*/)
         {
             stringArray[i] = rs.getString(2); //2 is the column number in the table
         }
    }
//Need to access stringArray here.  When I try to print out values, it always prints out as null.
}

谢谢!

2 个答案:

答案 0 :(得分:1)

嵌套循环有问题。对于每一行(每个i /每个外部循环执行的值),您遍历整个结果集并多次覆盖stringArray[i](我不是chaning)。

当你到达第二行(即i为1或更高)时,rs.next()将已经为假,因为你在外部循环的第一次迭代中遍历整个rs。

也许您只需要调用while(rs.next())

就可以替换内循环rs.next()

答案 1 :(得分:0)

也许在你的实际代码中,你说:

rowCount = 4; //In my code it actually counts it, lets say its four though.

您正在通过执行以下操作来执行行计数:

for( rowCount = 0; rs.next(); rowCount++ ) { }

如果您正在执行类似的操作,那么您基本上已经在计数阶段读取了所有行,并且当您尝试稍后重新处理行时,rs.next()方法只返回false,因为它是已经阅读了所有行。

当然,我只是猜测......