以下问题:我刚开始编程,刚开始将python programm翻译成Java。我遇到以下方法“getCurrentRoom()”:
static void getCurrentRoom(){
try{
Statement stmt = Database.connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT roomid, roomname, roomdesc, from_id, direction, route_desc FROM user, rooms, route WHERE user.location = rooms.roomid AND route.from_id = rooms.roomid");
while (rs.next()){
//1st while loop
String roomname = rs.getString("roomname");
String roomdesc = rs.getString("roomdesc");
int roomid = rs.getInt("roomid");
if (userLocation == roomid){
System.out.println("\n" + roomname);
Thread.sleep(1000);
System.out.println("\n" + roomdesc);
Thread.sleep(1000);
while (rs.next()){
//2nd while loop
String route_desc = rs.getString("route_desc");
int from_id = rs.getInt("from_id");
if (roomid == from_id){
System.out.println("\n" + route_desc);
//not enough printet here
}
}
}
}
}catch (Exception e){
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
}
在第一个“while-loop”中,我想检查哪个roomid对应于之前在另一个方法中定义的userLocation。这很好用,我打印出正确的结果(请注意,只有一个结果需要返回)。
在第二个“while-loop”中,当我尝试打印出符合宽限期的路径描述时,只返回了2个结果,尽管数据库中有3个拟合结果。
上面代码中使用的相关数据库表如下所示:
rooms(roomid, roomdesc, roomname)
以“roomid”作为primany key
user(userid, name, score, location, health, strenght, userdesc, moves)
以“userid”作为primany键
route(route_id, from_id, to_id, direction, route_desc
以“route_id”作为primany键
我无法找到出错的地方,所以任何帮助都会受到高度赞赏。
真的是AlexanderZC
答案 0 :(得分:0)
您遇到的问题是因为第一个rs.next()
正在推进您的指针而您只有两个元素要遍历。
尝试在第二个while循环之前放置rs.beforeFirst()
。