我正在开发一个带有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++;
}
这里是query2返回的行(我用mysql workbench测试过这个):
Fire 1 0 0 0 1 0 1 0 0 1 -1 1 0 0 0 -1 1 -1 4 Charmander 39 52 43 60 50 65 309 Fire null Blaze null Solar Power NULL
我希望这段代码会将第2列到第18列的值放入数组“weaka”中,但所有代码都会不断地执行
weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
但它永远不会增加i,永远不会读取任何其他列的内容,也永远不会结束。该程序只打印“1”几百次然后崩溃。为什么我不迭代?
有人可以帮我弄清楚如何让我的代码排成行并将第2列到第18列的内容读入数组吗?感谢
编辑:谢谢你的回答。他们都努力让数组读取行,但是这个过程仍然比两个答案都要长。就像它多次读取行一样。我给你的代码不在循环中,为什么它多次读取行?此外,Pokemon.ID是我的架构的主键,因此查询只会返回一行。
答案 0 :(得分:0)
ResultSet.next()
方法尝试从结果集中读取行,如果它管理则返回true
。你在做什么:
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]);
}
}
如果要读取多行,您也需要处理它。