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列总和的主要内容,如果未能解决你的问题,请参考以下文章

sql对查询结果求和

SQL通过联结表从其他表中选择总和作为列

SQL查询以在给定条件下明确获取总和

sql怎么添加自定义列并且将此列的数据作为条件查询

MariaDB/mysql SQL查询问题:我想根据另一列的组值对一列进行部分总和

搜索功能的 SQL 查询