jtable列的总和由sql查询提供

时间:2017-06-12 11:02:41

标签: java sql swing sum jtable

我在尝试获取jtable列的双倍数时遇到问题。我的表只从mySQL表中获取3列。其中一列是DATE类型,另外两列是DOUBLE类型。 所以,当我尝试:

double xreoseistot = 0;
double xreosi;
for(int i = 0; i < jTable1.getRowCount(); i++){


    xreosi = Double.parseDouble((String)jTable1.getValueAt(i, 2));
    xreoseistot += xreosi;}

我收到错误说:“线程中的异常”AWT-EventQueue-0“java.lang.ClassCastException:java.sql.Date无法强制转换为java.lang.String”

所以问题是,为什么我的代码试图将所有表转换为String而不仅仅是列,还有什么解决方案呢?

3 个答案:

答案 0 :(得分:0)

从您的错误消息中可以看出,返回的第三列是java.sql.Date,而不是字符串。因此,尝试将其转换为字符串并不是很有意义,也不应期望将字符串作为数字加总是有意义的。

相反,您可以尝试汇总表示结果集中每个日期的毫秒数:

for (int i=0; i < jTable1.getRowCount(); i++) {
    xreosi = Double.parseDouble((double)jTable1.getValueAt(i, 2).getTime());
    xreoseistot += xreosi;
}

如果您打算将其他两列(可能是双精度数)相加,那么您应该更改for循环中的列索引,例如

for (int i=0; i < jTable1.getRowCount(); i++) {
    xreosi = Double.parseDouble(jTable1.getValueAt(i, 1)); // assuming 2nd column is double
    xreoseistot += xreosi;
}

答案 1 :(得分:0)

问题出在这里:

Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: java.sql.Date cannot be cast to java.lang.String

你为什么要用Date计算?你的意图是什么?您希望如何使用日期部分进行操作? - 一天,一个月......

答案 2 :(得分:0)

原来,我的语法错了,我不想计算日期。我的意思是第1列,抱歉,感谢