从结果集检索数据

9cbw7uwe  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(264)

这个问题在这里已经有答案了

结果集异常-在结果集开始之前(6个答案)
5天前关门了。
我正在尝试从按年分组的by sql语句中检索所有记录。我可以使用rs.getstring(1)和rs.getstring(2)检索第一个集合的年份和数字,但是当我尝试rs.getstring(3)时,我得到了一个sqlexception错误。我希望获取行的第一个索引和第二个索引,分别获得年份和数字。
对数据库执行的查询返回以下内容:

代码段:

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

String sql = "SELECT Year, SUM(all_motor_vehicles) AS allmotor\n" +
          "FROM Vehicle\n"
        + "WHERE Year IN (2005, 2006, 2007)\n"
        + "GROUP BY YEAR;";

pst = con.prepareStatement(sql);
rs = pst.executeQuery();

amount = Integer.parseInt(rs.getString(2)); //get the result
yearFromDB = rs.getString(1);
System.out.println(amount + " " + yearFromDB); //result is printed

dataset.addValue(amount, allMotorVehicles, yearFromDB);

System.out.println(rs.getString(3) + " " + rs.getString(4)); //Gives me an error

输出:

345433 2005
SQLException error
tv6aics1

tv6aics11#

while (rs.next()) {
    amount = Integer.parseInt(rs.getString(2)); //get the result
    yearFromDB = rs.getString(1);
    System.out.println(amount + " " + yearFromDB); //result is printed
}

结果集包含多行数据。要转到下一行,需要如上所述调用rs.next()方法。
调用rs.getstring(3)所做的工作基本上是试图访问第一行的第四列。因为第四列不存在,所以您得到了一个错误。

nsc4cvqm

nsc4cvqm2#

只是为了消除由于rs.getstring(1)/rs.getstring(2)造成的混乱。您可以直接使用列名代替数字,如下所示。

while (rs.next()) {
        amount = Integer.parseInt(rs.getString("allmotor")); //get the result
        yearFromDB = rs.getString("Year");
        System.out.println(amount + " " + yearFromDB); //result is printed
    }

相关问题