2017-09-15 88 views
-6

我正在Java中运行一组SQL查询来检索a,b和c值。之后,我想对它们进行一些操作并将结果输出给用户。“java.lang.NumberFormatException:对于输入字符串”这个异常的原因是什么

我得到一个“java.lang.NumberFormatException:对于输入字符串”运行下面的代码时:

try { 
    String sql1="SELECT COUNT(CASE WHEN Type = 'Sick' THEN 1 ELSE 0 END) AS sick FROM `leave` WHERE `leave`.`EID`=? AND `leave`.`Month`=?"; 
    pst=conn.prepareStatement(sql1); 
    int a = Integer.parseInt(sql1); 
    String sql2="SELECT COUNT(CASE WHEN Type = 'annual' THEN 1 ELSE 0 END) AS annual FROM `leave` WHERE `leave`.`EID`=? AND `leave`.`Date`=?"; 
    pst=conn.prepareStatement(sql2); 
    int b= Integer.parseInt(sql2); 
    String sql3="SELECT COUNT(CASE WHEN Type = 'Half day' THEN 1 ELSE 0 END) AS Half_day FROM `leave` WHERE `leave.EID`=? AND `leave`.`Date`=?"; 
    pst=conn.prepareStatement(sql3); 
    rs=pst.executeQuery(); 
    int c= Integer.parseInt(sql3); 

    if ((a+b+(c/2)) < 14) { 
     int double_pay = 14 - (a+b+(c/2)); 
    } 
    else { 
     int double_pay = 0; 
    } 
    txt_double_pay.setText(double_pay+""); 
} 
catch(Exception e){ 
    JOptionPane.showMessageDialog(null,e); 
} 

有谁知道这个异常的原因是什么?

+2

你是如何解析整个SQL查询字符串的int? –

回答

2

的原因是

Integer.parseInt(sql3) 

需要SQL3是可以被解析成整数的串保持数据..

你SQL3对象是持有,而不是这样的:

sql3="SELECT COUNT(CASE WHEN Type = 'Half day' THEN 1 ELSE 0 END) 
    AS Half_day FROM `leave` WHERE `leave.EID`=? AND `leave`.`Date`=?"; 

所以java将永远无法得到任何数字的字符串....

相关问题