Java不会打印SQL-Database的每个结果

时间:2016-12-05 11:19:04

标签: java sqlite

以下问题:我刚开始编程,刚开始将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

1 个答案:

答案 0 :(得分:0)

您遇到的问题是因为第一个rs.next()正在推进您的指针而您只有两个元素要遍历。

尝试在第二个while循环之前放置rs.beforeFirst()