2017-06-12 74 views
0

我在尝试获取jtable列的双重总和时遇到了问题。我的表只从mySQL表中获取3列。其中一列是DATE类型,另外两列是DOUBLE类型。 所以,当我尝试:由sql查询提供的jtable列的总和

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 “

所以问题是,为什么我的代码试图让所有的表转换为字符串,而不仅仅是列,还有,这有什么解决方案?

+0

[Java中ClassCastException的解释](https://stackoverflow.com/questions/907360/explanation-of-classcastexception-in-java) –

回答

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

问题是在这里:

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

为什么你想用日期来计算?你有什么打算?你想如何操作Date部件? - 日,月...

0

原来,只是我的语法错了,我不想计算日期。我的意思是第1列,对不起人,谢谢