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