读书人

一段jsp代码在windows下运行正常在

发布时间: 2012-02-07 17:45:36 作者: rapoo

一段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 的对象附个初始值

读书人网 >Java Web开发

热点推荐