ps.setInt(19, Integer.parseInt(check.getGIFTNUM()));
其中check.getGiftNum()有可能拿到的是"",这样就报NumberFormatException,数据库中该字段可以为空,如果前台拿不到值,数据库中该字段可以为空,请问老大们这样如何实现?

解决方案 »

  1.   

    假设GIFTNUM为-1表示无效。String gifnum = check.getGIFTNUM();
    ps.setInt(19, gifnum.matches("\\d+")? Integer.parseInt(gifnum): -1);
      

  2.   


    之前如何判断?使用的是jdbc的preparestatement,其中setInt(19,...);都是按照sql语句中的顺序来的,如果判断得到的结论拿到的是“”,那么应该如何处理呢?这里set的是Int型的,赋值“”为string肯定不行,如果这条不写会引起jdbc的报错。请教如何处理?
      

  3.   

    你把你的SQl语句改下, SQL中有个decode  把如果为空就变成0,这样在转换的时候就不会出现NumberFormatException了
      

  4.   


    这样改动太大了吧,我的意思是如果传过来的为“”,数据库中就插入“”或者该列不做插入都可以。
    用decode,我还不如判断一下,直接赋值0呢。
      

  5.   

    ps.setInt(19, check.getGIFTNUM()==""?null:Integer.parseInt(check.getGIFTNUM()));
      

  6.   

    上面的不要乱写代码啦应该是
    if(check.getGIFTNUM() == null)
      ps.setNull(19, Types.INTEGER);
    else
      ps.setInt(19, Integer.parseInt(check.getGIFTNUM()));