java - 结果集结束后出现 JDBC 错误

标签 java mysql jdbc

我创建了一个方法,它应该从我的数据库返回一个单元格(它是一个 varchar 变量)并将其分配给一个字符串。然后调用另一个方法,该方法采用该 String 并将变量分配给 User 对象,然后将其添加到数组列表中。 SQL 查询语句在 PHPMyAdmin 中工作正常,但在 Java 中,该方法会一直运行到 System.out.println("Getting follower...");

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

预先感谢您的所有帮助。

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;

}

最佳答案

  • 第一个 while 循环为空

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

    现在您在 while 子句中再次调用 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());
   }

Read more...

关于java - 结果集结束后出现 JDBC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791197/

相关文章:

java - 尽管存在 “FATAL: database ',但出现错误 'db name' 数据库名称“不存在”

java - SQLite JDBC 连接的准确语法是什么?

java - 创建新实例时,如何检查它是否重复,如果是,则返回原始指针?

mysql - mysql innoDB性能

MySQL全文索引

php - 实时和日期插入MySQL服务器

java - Spring BatchSqlUpdate 在一次失败后不执行 SQL 的其余部分

java - Java 类是 SQL 关系数据库的良好替代品吗?

java - 搜索没有主键的记录

Java:什么构成了 File.isFile() 上下文中的 "normal"文件?