java.sql.SQLException : After end of result set error in mysql 异常

标签 java mysql

我试图从数据库中读取数据并将 ResultSet 存储在 ArrayList 中。但是,当我打印 arraylist 时,我收到错误 java.sql.SQLException: After end of result set。我已经检查过我没有根据此 link 调用我的 result.next() 两次.有人有更好的方法来存储结果集吗?然后我可以在我想要的位置打印出来。

Statement stmt=con.createStatement();  
            ResultSet rsVehicle=stmt.executeQuery("select * from vehicle");  
            while(rsVehicle.next()) {  
                vehicleList.add(rsVehicle);
            }
            System.out.println(vehicleList.size());

            for(int i=0;i<vehicleList.size();i++) {
                System.out.println(vehicleList.get(i).getInt(1)+"  "+vehicleList.get(i).getString(2)+"  "+vehicleList.get(i).getString(3)+"  "+
                        vehicleList.get(i).getString(4)+"  "+vehicleList.get(i).getString(5)+"  "+vehicleList.get(i).getString(6)+"  "+
                        vehicleList.get(i).getString(7)+"  "+vehicleList.get(i).getString(8)+"  "+vehicleList.get(i).getString(9)+"  "+
                        vehicleList.get(i).getString(10)+"  "+vehicleList.get(i).getString(11)+"  "+vehicleList.get(i).getString(12)+"  "+
                        vehicleList.get(i).getString(13)+"  "+vehicleList.get(i).getString(14)+"  "+vehicleList.get(i).getString(15));
            }

            PreparedStatement ps;
            ps =con.prepareStatement("SELECT * from job WHERE date = ?");
            ps.setString(1, date);
            ResultSet rsJob=ps.executeQuery();  
            while(rsJob.next()) {  
                jobList.add(rsJob);
            }
            System.out.println(jobList.size());

            for(int i=0;i<jobList.size();i++) {
                System.out.println(jobList.get(i).getInt(1)+"  "+jobList.get(i).getString(2)+"  "+jobList.get(i).getString(3)+"  "+
                        jobList.get(i).getString(4)+"  "+jobList.get(i).getString(5)+"  "+jobList.get(i).getString(6)+"  "+
                        jobList.get(i).getString(7)+"  "+jobList.get(i).getString(8)+"  "+jobList.get(i).getString(9)+"  "+
                        jobList.get(i).getString(10)+"  "+jobList.get(i).getString(11)+"  "+jobList.get(i).getString(12)+"  "+
                        jobList.get(i).getString(13)+"  "+jobList.get(i).getString(14)+"  "+jobList.get(i).getString(15));
            }

最佳答案

在您的代码中,您将结果集添加到列表中,然后遍历该列表以获取数据,但正确的流程是:

  • 从结果集中提取数据并将它们放入列表中。
  • 在您可以迭代列表以打印结果之后。

代码应该类似于:

// Create a new list of vehicles
List<Vehicle> vehicleList = new ArrayList<>();
Statement stmt=con.createStatement();  
ResultSet rsVehicle=stmt.executeQuery("select * from vehicle");  
while(rsVehicle.next()) {  
    // Create a new vehicle for each record returned from the query
    Vehicle vehicle = new Vehicle();

    // Set to the vehicle each property taken from that record
    vehicle.setBrand(rsVehicle.getString(1));
    ...

    // Add that vehicle to the list
    vehicleList.add(vehicle);
}

...

// Iterate the list and print each field you need
for (Vehicle vehicle: vehicleList) {
   // PRint each vehicle
   System.out.println("Vechicle brand: " + vehicle.getBrand());
}

注意:如果重定义Vehicle类的方法toString可以直接调用System.out.println(vehicle);

关于java.sql.SQLException : After end of result set error in mysql 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56000940/

相关文章:

java - 以编程方式将 PIN 联系人添加到 BBM

java - Jsoup 删除嵌套标签但保留文本

java - 哈希集中的方法重写

c# - 实体之间的一对一关系不适用于 Entity Framework 6

mysql - XML 到 MySQL 5.0

mysql - 下面的示例如何写总和和计数?

java - "tail -f"JSch连接关闭后进程不会退出

mysql - 复制表行,但使用另一个值

php - MySQL存储在一台服务器上转义的字符而不是另一台服务器

java - 是否可以在 JDBC 中批量创建 Oracle Struct?