使用java读取SQL行时出现的问题

使用java读取SQL行时出现的问题,java,sql,jdbc,Java,Sql,Jdbc,我正在开发一个带有sql数据库的java程序,它是一个口袋妖怪。我在将数据库的一行放入数组时遇到问题。这是我的代码中导致问题的部分 String query2 = "SELECT * " + "FROM Pokedex.typea, Pokedex.Pokemon where Pokemon.ID = " + pk + " AND type1 = type_name"; java.sql.Statement st2 =

我正在开发一个带有sql数据库的java程序,它是一个口袋妖怪。我在将数据库的一行放入数组时遇到问题。这是我的代码中导致问题的部分

String query2 = "SELECT * " + 
                  "FROM Pokedex.typea, Pokedex.Pokemon where Pokemon.ID = " + pk +
                  " AND type1 = type_name";

java.sql.Statement st2 = con.createStatement();   
ResultSet rs2 = st2.executeQuery(query2);

int i = 2
    while(rs2.next() && i<19) {
        weaka[i-2] = rs2.getInt(i);
        System.out.println(weaka[i-2]);
        i++;
    }
我希望这段代码将第2列到第18列的值放入数组“weaka”,但代码所做的只是不断地做

weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
但它从不增加i,从不阅读任何其他专栏的内容,也从不结束。程序只打印了几百次“1”,然后就崩溃了。为什么i没有迭代

有人能帮我弄清楚如何让我的代码向下一行并将第2列到第18列的内容读入数组吗?谢谢

编辑:谢谢你的两个答案。他们都努力让数组读取该行,但这一过程仍然比两个答案的时间都长。这就像它读取行多次一样。我给你的代码不是在一个循环中,那么为什么它要多次读取该行呢

另外,Pokemon.ID是我的模式的主键,因此查询将只返回一行。

ResultSet.next()方法尝试从结果集中读取一行,如果成功,则返回
true
。你在做什么:

while(rs2.next() && i<19) {
    weaka[i-2] = rs2.getInt(i);
    System.out.println(weaka[i-2]);
    i++;
}

while(rs2.next()&&I如果ResultSet有多行,会发生什么情况?正如我已经提到的,这需要处理。但是根据
ID
等字段名和变量
pk
,我假设它是一个主键。我的示例用于解释
ResultSet.next()
应该使用。请尝试使用调试器。
而当SQL查询从数据库返回多行时,答案中的循环只能处理多行
while(rs2.next() && i<19) {
    weaka[i-2] = rs2.getInt(i);
    System.out.println(weaka[i-2]);
    i++;
}
if (rs2.next()) {
    for (int i=2; i < 19; i++){
        weaka[i-2] = rs2.getInt(i);
        System.out.println(weaka[i-2]);
    }
}