ResultSet next() 只返回一行

Posted

技术标签:

【中文标题】ResultSet next() 只返回一行【英文标题】:ResultSet next() is returning only one row 【发布时间】:2016-04-24 16:39:39 【问题描述】:

我有这个方法

public List<Course> getCourses() throws InvalidCourseDataException 
    ArrayList<Course> allCoursesFromDB = new ArrayList<>();
    Connection dbConnection = null;

    String getFromTableSQL = "SELECT * FROM courses";

    try 
        dbConnection = getDBConnection();
        statement = dbConnection.createStatement();
        resultSet = statement.executeQuery(getFromTableSQL);

        while (resultSet.next()) 

            String courseCategory = resultSet.getString("course_category");
            String courseTitle = resultSet.getString("course_title");

            int courseId = resultSet.getInt("course_id");

            Date startDate = resultSet.getTimestamp("starting_date");
            Date endDate = resultSet.getDate("ending_date");
            String description = resultSet.getString("description");
            int teacherId = resultSet.getInt("teacher_id");

            Course course = new Course(courseCategory, courseTitle, startDate, endDate);
            course.setCourseId(courseId);
            course.setTeacherId(teacherId);
            course.setDescription(description);

            addParticipantsIdToCourse(course);
            allCoursesFromDB.add(course);
        

getDBConnection() 方法是 私有静态连接 getDBConnection()

    System.out.println("-------- mysql JDBC Connection Testing ------------");

    Connection dbConnection = null;

    try 
        Class.forName(DB_DRIVER);
     catch (ClassNotFoundException e) 
        System.out.println(e.getMessage());
    

    try 
        dbConnection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
        return dbConnection;
     catch (SQLException e) 
        System.out.println(e.getMessage());
    

    return dbConnection;


我的问题是 resultSet.next() 只返回数据库的第一行。我确定我有多行。我看到了JDBC ResultSet is giving only one row although there are many rows in table? 这个问题,但它真的没有回答我的问题:)

【问题讨论】:

你怎么知道它只返回一个?调试?一些输出? 您确定连接到正确的数据库吗? 当我调试时,我看到只有一门课程被添加到我的 ArrayList 中。是的,我非常确定数据库 【参考方案1】:

我很抱歉这个问题。我发现了我的错误。 ResultSet next() 方法工作正常,但我在 addParticipantsIdToCourse(course) 方法中更改了它的值:)

【讨论】:

以上是关于ResultSet next() 只返回一行的主要内容,如果未能解决你的问题,请参考以下文章

如何仅从 ResultSet 中获取第一行

关于对ResultSet 中next() 方法的描述及用法是啥啊

ResultSet next方法

iterator接口的hasnext方法、next方法和ResultSet结果集的next方法的区别

jsp中rt.next()指的是啥?还有rs.next()与rt.next()有啥区别?一直不太清楚

MYSQL 之 JDBC: 增删改查通过ResultSet执行查询操作