<!--访问量统计-->
<%
String str = "";
DBSource db = new DBSource();
db.executeQuery("SELECT FIELD1 FROM TABLE1 WHERE ROLE='system'");
db.next();
str = db.getString("FIELD1");
int a = Integer.parseInt(str); //此处报错:For input string: ""
a = a + 1;
String str1 = String.valueOf(a);
db.executeQuery("UPDATE TABLE1 SET A=" + str1);
%>
<!--访问量统计-完-->通过表TABLE1中ROLE='system'的一行来实现访问量统计。已经确认数据库连接没有问题,且表TABLE1中有且仅有一行满足ROLE='system'。在windows下开发,页面运行正常,访问量统计功能也是正确的。可是部署到linux系统后,就会报错:For input string: ""。经过调试,已经确认报错的语句为:    int a = Integer.parseInt(str); 原因应该是没有取出值。可是数据库中确实有这个值。望大虾指教!

解决方案 »

  1.   

    这跟系统应该没关系吧,
    若str是"",在windows下也是会报异常的阿
    还是先确认下程序是否正确.
      

  2.   

    一般的做法
    int a = Integer.parseInt(str);
     写进一个方法中,
    要考虑str是否为数字形,
    还有 使用Integer.parseInt(str)要截获异常的。try catch surrounding
      

  3.   

    在Windows下是正常的啊。数据库(包括所有数据)也都导到Linux系统了。希望有类似经验的开发同行提示一下可能是哪儿的问题呢?
      

  4.   

    回kk,但现在问题是读出来的str是空的,所以parseInt会出问题。在Windows下读出的str就是正确的值。
      

  5.   

    db.executeQuery("SELECT FIELD1 FROM TABLE1 WHERE ROLE='system'");
    db.getString("");?????????
    db  ?????????
      

  6.   

    加上在数值转换加上:try catch
    确认你linux下:在str = db.getString("FIELD1");这条语句运行完后str 的值是多少.
    其实这个和系统无关,关键是数据库的值
      

  7.   

    回楼上,str = db.getString("FIELD1")执行后str的值是""啊,否则不会报For input string: ""的错啊。db是DBSource的对象,DBSource是封装好的数据库访问类。
      

  8.   

    把读出来的数据trim一下,然后在Parse
      

  9.   

    ""空值肯定不能用int a = Integer.parseInt(str);转换成int噻.捕捉一下NumberFormatException错误
      

  10.   

    lz的意思是在windows下str = db.getString("FIELD1");可以取得值,而在linux下取不到,所以导致报异常
      

  11.   

    lz先确认在linux下是否可以连接上数据库???
      

  12.   

    aimer对我的意思理解正确,首先表示感谢。数据库是可以连接上的,但都是使用标签的方式实现的。只有本贴描述的计数统计这块是直接调用已封装的DBSource类来实现的。所以不知问题是出在何处。我会尽快按照各位大大的建议进行调试。也请有过相关经验的朋友继续给与提示,不胜感激!
      

  13.   

    SELECT FIELD1 FROM TABLE1 WHERE ROLE='system'
    这条语句  你首先到 数据库客户端中去执行一下   看看能不能取得数据
    估计是取不到还有  parse  时  catch 一下吧   否则 就做个判断,给要parse 的对象附个初始值