这个问题在这里已经有答案了:
结果集异常-在结果集开始之前(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
2条答案
按热度按时间tv6aics11#
结果集包含多行数据。要转到下一行,需要如上所述调用rs.next()方法。
调用rs.getstring(3)所做的工作基本上是试图访问第一行的第四列。因为第四列不存在,所以您得到了一个错误。
nsc4cvqm2#
只是为了消除由于rs.getstring(1)/rs.getstring(2)造成的混乱。您可以直接使用列名代替数字,如下所示。