【发布时间】:2021-04-20 07:00:25
【问题描述】:
我正在尝试显示我的数据库中的数据。我目前一次执行一个查询,以获得每年的一个特定结果。我需要对数据库中的所有列执行此操作,但这会使代码变得异常混乱。有没有更简单的方法可以从数据库中读取数据以显示为折线图?
当前代码sn-p:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
String sql = "SELECT SUM(all_motor_vehicles), Year FROM Vehicle WHERE Year = 2005";
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
amount = Integer.parseInt(rs.getString(1)); //get the result
yearFromDB = rs.getString(2);
System.out.println(amount + " " + yearFromDB); //print result
int amount2006;
String yearFromDB2006;
String sql2 = "SELECT SUM(all_motor_vehicles), Year FROM Vehicle WHERE Year = 2006";
pst = con.prepareStatement(sql2);
rs = pst.executeQuery();
amount2006 = Integer.parseInt(rs.getString(1)); //get the result
yearFromDB2006 = rs.getString(2);
System.out.println(amount2006 + " " + yearFromDB2006); //print result
int amount2007;
String yearFromDB2007;
String sql3 = "SELECT SUM(all_motor_vehicles), Year FROM Vehicle WHERE Year = 2007";
pst = con.prepareStatement(sql3);
rs = pst.executeQuery();
amount2007 = Integer.parseInt(rs.getString(1)); //get the result
yearFromDB2007 = rs.getString(2);
System.out.println(amount2007 + " " + yearFromDB2007); //print result
dataset.addValue(amount, allMotorVehicles, yearFromDB);
dataset.addValue(amount2006, allMotorVehicles, yearFromDB2006);
dataset.addValue(amount2007, allMotorVehicles, yearFromDB2007);
JFreeChart chart = ChartFactory.createLineChart("Traffic by Vehicle type", "Vehicle", `"Amount",dataset);`
数据库中的信息片段:
实施建议的查询给出 SQL 错误:
在 DB 中执行查询返回:
我可以使用 rs.getString(1) 检索 2005 年,它是使用 rs.getString(2) 的相应数字,但是当我尝试检索 2006 年时,它是通过 rs.getString(3) 和 rs.getString( 4) 我得到一个 SQLException 错误
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)); //retrieves amount
yearFromDB = rs.getString(1);
System.out.println(amount + " " + yearFromDB); //retrieves year (2005)
System.out.println(rs.getString(3) + " " + rs.getString(4)); //gives me an SQL ERROR
【问题讨论】:
-
您的查询在结果集中只有 2 列,因此
rs.getString(3)或rs.getString(4)将引发错误。考虑使用我在下面的回答中给出的查询。 -
我已经实现了你的 SQL 查询。如何从第二列和第三列检索数据?
-
您没有,因为您只选择了 两个 列。
-
我很困惑。如果 rs.getString(1) 和 rs.getString(2) 检索到 2005 年和编号,我如何检索 2006 年和 2007 年及其编号?
-
我已经回答了你的问题。祝你好运!
标签: java mysql jdbc jfreechart