sql查询提供的jtable列总和
Posted
技术标签:
【中文标题】sql查询提供的jtable列总和【英文标题】:Sum of jtable Column provided by sql query 【发布时间】:2017-06-12 11:02:41 【问题描述】:我在尝试获取 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”
所以问题是,为什么我的代码试图将所有表转换为字符串,而不仅仅是列,还有什么解决方案?
【问题讨论】:
Explanation of "ClassCastException" in Java的可能重复 【参考方案1】:从您的错误消息看来,返回的第三列是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;
【讨论】:
【参考方案2】:问题就在这里:
Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: java.sql.Date cannot be cast to java.lang.String
您为什么要尝试使用 Date 进行计算?你的意图是什么?您想如何使用 Date 部件进行操作? - 日、月...
【讨论】:
【参考方案3】:原来,只是我的语法错误,我不想计算日期。我的意思是第 1 列,对不起,谢谢
【讨论】:
以上是关于sql查询提供的jtable列总和的主要内容,如果未能解决你的问题,请参考以下文章