如何从MySQL查询将数据传递给ResultSet?

时间:2011-07-26 03:48:31

标签: java java-ee jdbc

当我运行查询时,它返回以下结果

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);
            }

谢谢

3 个答案:

答案 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));

我错过了什么?