Java 结果集结束后出现JDBC错误

Java 结果集结束后出现JDBC错误,java,mysql,jdbc,Java,Mysql,Jdbc,我已经创建了一个方法,该方法应该从我的数据库返回一个单元格(它是一个varchar变量)并将其分配给一个字符串。然后调用另一个方法,该方法获取该字符串并将变量分配给用户对象,然后将用户对象添加到数组列表中。SQL查询语句在PHPMyAdmin中运行良好,但在Java中,该方法一直运行到System.out.println(“获取追随者…”)之后 然后由于某种原因它停止了工作。我不理解它,因为我使用这个方法的代码在程序的其他部分检索不同的变量没有任何问题,但是每当我试图从数据库中获取这个变量时,它

我已经创建了一个方法,该方法应该从我的数据库返回一个单元格(它是一个varchar变量)并将其分配给一个字符串。然后调用另一个方法,该方法获取该字符串并将变量分配给用户对象,然后将用户对象添加到数组列表中。SQL查询语句在PHPMyAdmin中运行良好,但在Java中,该方法一直运行到System.out.println(“获取追随者…”)之后

然后由于某种原因它停止了工作。我不理解它,因为我使用这个方法的代码在程序的其他部分检索不同的变量没有任何问题,但是每当我试图从数据库中获取这个变量时,它都无法正常工作

提前感谢你的帮助

public ArrayList<User> returnFollowers(){

    ArrayList<User> userArray = new ArrayList<User>();

    User user = new User();

    try{
        Class.forName("com.mysql.jdbc.Driver");
        statement = connection.createStatement();
        result = statement.executeQuery("SELECT Follower FROM User_Followers WHERE Username = 'Apple123'");

        if(!result.next()){

            System.out.println("No results found");
        }
        else{
            while(result.next()){
            }
                System.out.println("Getting followers...");
                String userID = result.getString("Follower");

                user.createUser(userID);
                userArray.add(user);
            }
        }
    catch(ClassNotFoundException error){
        System.out.println("Error: " + error.getMessage());
    }
    catch(SQLException error){
        System.out.println("Error " + error.getMessage());
    }       
    finally{
        if(connection != null){
            try{
                connection.close();
            }
            catch(SQLException ignore){

            }
        }

        if(statement != null){
            try{
                statement.close();
            }
            catch(SQLException ignore){
            }

        }
    }

    return userArray;

}
public ArrayList returnFollowers(){
ArrayList userArray=新的ArrayList();
用户=新用户();
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
statement=connection.createStatement();
result=statement.executeQuery(“从用户名为'Apple123'”的用户_Followers中选择Follower”);
如果(!result.next()){
System.out.println(“未找到结果”);
}
否则{
while(result.next()){
}
System.out.println(“获取追随者…”);
字符串userID=result.getString(“Follower”);
user.createUser(userID);
添加(用户);
}
}
捕获(ClassNotFoundException错误){
System.out.println(“错误:+Error.getMessage());
}
捕获(SQLException错误){
System.out.println(“Error”+Error.getMessage());
}       
最后{
if(连接!=null){
试一试{
connection.close();
}
捕获(SQLException忽略){
}
}
if(语句!=null){
试一试{
语句。close();
}
捕获(SQLException忽略){
}
}
}
返回用户数组;
}
  • 第一个
    ,而
    循环为空

  • 第二个问题是在
    if
    子句中调用的
    result.next()

    现在您正在
    子句中再次调用
    result.next()
    ,因此第一条记录已被跳过

    在这种情况下,在
    do while
    中更改
    while
    循环

这样做:

   if(!result.next()){
        System.out.println("No results found");
   }else{
        do{
            System.out.println("Getting followers...");
            String userID = result.getString("Follower");

            user.createUser(userID);
            userArray.add(user);
        }while(result.next());
   }

您正在调用
result.getString(“Follower”)
而不在
循环的范围内,因此没有更多可用记录。这里最好只使用一个while循环

谢谢。我觉得自己像个白痴,没看到它,但我真的很感谢你的帮助。第一张唱片总是被跳过。不是吗?如果问题解决了,那么就接受最佳答案来结束线程。参观