日期:2014-05-18  浏览次数:20657 次

一段jsp代码,在windows下运行正常,在linux下报错
<!--访问量统计-->
<%
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);  

原因应该是没有取出值。可是数据库中确实有这个值。望大虾指教!



------解决方案--------------------
这跟系统应该没关系吧,
若str是 " ",在windows下也是会报异常的阿
还是先确认下程序是否正确.
------解决方案--------------------
一般的做法
int a = Integer.parseInt(str);
写进一个方法中,
要考虑str是否为数字形,
还有 使用Integer.parseInt(str)要截获异常的。try catch surrounding

------解决方案--------------------
关注
------解决方案--------------------
db.executeQuery( "SELECT FIELD1 FROM TABLE1 WHERE ROLE= 'system ' ");
db.getString( " ");?????????
db ?????????

------解决方案--------------------
加上在数值转换加上:try catch
确认你linux下:在str = db.getString( "FIELD1 ");这条语句运行完后str 的值是多少.
其实这个和系统无关,关键是数据库的值
------解决方案--------------------
把读出来的数据trim一下,然后在Parse
------解决方案--------------------
SELECT FIELD1 FROM TABLE1 WHERE ROLE= 'system '
这条语句 你首先到 数据库客户端中去执行一下 看看能不能取得数据
估计是取不到

还有 parse 时 catch 一下吧 否则 就做个判断,给要parse 的对象附个初始值