我在嵌套在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.
}
谢谢!
答案 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,因为它是已经阅读了所有行。
当然,我只是猜测......