我从数据库中提取数据并将其存储在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;
}
答案 0 :(得分:0)
您的findRecords返回地图列表,每个地图都包含列名作为键和相应的值。
在你的情况下,密钥是sql语句建议的'work_entry', 值为1.5,{hours_worked = 1.5}是地图上toString方法的默认输出。
如果你想要时间,你需要调用totalHours.get(i).get(“hours_worked”)。
如果你使用泛型,你会看到对象类型。