当我运行查询时,它返回以下结果
periodEndingDate | TotalMin | TimesheetId |
-------------------------------------------
2007-08-19 | 38.000 | 1|
2010-09-17 | 26.500 | 2|
所以,我有以下获取值的方法,我知道第三种方法是正确的(第一)但是我如何转换到第二列和第一列? (日期)和(浮点数或双数),TotalMin是几个列(分钟)的整数除以60的加法。
这就是我所拥有的
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT periodEndingDate,
((minutesMon+minutesTue+minutesWed+minutesThu+"
+"minutesFri+minutesSat+minutesSun)/60) as TotalMin,
TimesheetId FROM timesheet WHERE employeeID='"+empID+"';");
for (; rs.next();) {
ArrayList tmData = new ArrayList();
tmData.add((String) rs.getObject(1));
tmData.add((String) rs.getObject(2));
//for the timesheet id
tmData.add(((Number) rs.getObject(3)).intValue());
TimeSheetData.add(tmData);
}
谢谢
答案 0 :(得分:4)
您可以使用rs.getDate()
或rs.getTimestamp()
作为第一列。
您可以将rs.getDouble()
用于第二个。
这比使用rs.getObject()然后强制转换更好。我将您的第3列更改为rs.getInt()
注意:rs.getInt()和rs.getDouble()返回在列表中添加自动装箱的原语。
答案 1 :(得分:1)
希望这就是你的目标
创建一个类
class Timesheet
{
//periodEndingDate | TotalMin | TimesheetId
private Date periodEndingDate;
private BigDecimal totalMin;
private int timesheetId;
//---------GETTERS AND SETTERS
}
然后在上面的代码中用这个替换for循环
List<Timesheet> tmData = new ArrayList<Timesheet>();
while (rs.next()) {
Timesheet timesheet = new Timesheet();
//periodEndingDate,TotalMin and TimesheetId should be the name of columns in the table
timesheet.setPeriodEndingDate( rs.getDate("periodEndingDate"));
timesheet.setTotalMin( rs.getBigDecimal("TotalMin"));
timesheet.setTimesheetId(rs.getInt("TimesheetId"));
tmData.add(timesheet);
}
答案 2 :(得分:0)
为什么你不能这样做:
tmData.add((DateTime) rs.getObject(1));
tmData.add((decimal) rs.getObject(2));
我错过了什么?