从Java中的List中提取特定值

时间:2015-03-12 02:01:29

标签: java mysql jdbc

我从数据库中提取数据并将其存储在List中,现在当我使用list.get(index)从列表中提取条目时,我得到{hours_worked = 1.5的输出}。

我想从数据库获得的只是1.5,而不是工作时间。

这是我正在使用的方法,即检索List:

    public List totalHoursByActivity(int custId, int activityId) throws ClassNotFoundException, SQLException {
    this.openConnection();

    List totalHours = new ArrayList();

    String sqlStmt = "SELECT hours_worked\n"
            + "from work_entry\n"
            + "JOIN activity\n"
            + "ON work_entry.activity_id = activity.activity_id\n"
            + "JOIN customer\n"
            + "ON work_entry.customer_id = customer.customer_id\n"
            + "WHERE customer.customer_id = " + custId + " and activity.activity_id = " + activityId;

    totalHours = db.findRecords(sqlStmt);

    return totalHours;
}

有没有办法从列表中拉出双倍?或者什么可能是拉出数据并获得该值的最佳方式?

编辑:这就是findRecords:

    public List findRecords(String sqlStmt) throws SQLException {
    final List allRecords = new ArrayList();
    Map record = null;
    Statement stmt = null;
    ResultSet rs = null;
    ResultSetMetaData metaData = null;

    stmt = conn.createStatement();
    rs = stmt.executeQuery(sqlStmt);
    metaData = rs.getMetaData();
    int columnCount = metaData.getColumnCount();

    while (rs.next()) {
        record = new HashMap();
        for (int i = 1; i <= columnCount; i++) {
            record.put(metaData.getColumnName(i), rs.getObject(i));
        }
        allRecords.add(record);
    }

    return allRecords;
}

1 个答案:

答案 0 :(得分:0)

您的findRecords返回地图列表,每个地图都包含列名作为键和相应的值。

在你的情况下,密钥是sql语句建议的'work_entry', 值为1.5,{hours_worked = 1.5}是地图上toString方法的默认输出。

如果你想要时间,你需要调用totalHours.get(i).get(“hours_worked”)。

如果你使用泛型,你会看到对象类型。