请教JSP中数据库操作取不到SUM运算结果值的问题!!多谢!!!

村北头的码农
人工智能领域新星创作者
2004-12-31 11:09:26
使用sqlbean.executeQuery("select count(*) as cnt from Requre1");没问题,insert、delete、update都没问题,运行正常,但是当执行
sqlbean.executeQuery("select sum(Mount) as cnt from Requre1");时,出现问题,当执行
if(sqlbean.next))
{
totalRecord = sqlbean.getInt("cnt");
}时时出现NullPointerException异常,也就是说根本取不到SUM运算得到的值,请问出现这种问题一般都是什么原因引起的,因为执行其他操作都正常,只是执行SUM时遇到问题,请高手指点。多谢!!!!
...全文
206 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
NoCry 2004-12-31
  • 打赏
  • 举报
回复
检查一下Mount的数据类型对不对!
华生豆 2004-12-31
  • 打赏
  • 举报
回复
if(sqlbean.next())
{
totalRecord = sqlbean.getInt(1);
}

试试这样~~~
村北头的码农 2004-12-31
  • 打赏
  • 举报
回复
问题解决,感谢大家!!!尤其感谢tom2005(快乐着),决定结帖,非常感谢大家的帮助。
非思丸智能 2004-12-31
  • 打赏
  • 举报
回复
SELECT SUM(TransferIQuantity) AS cnt FROM TransferIMaster 你这句在数据库里运行有值吗????大哥,如果有值就不会用问题,还有你异常了给个0给它,怎么还是null不会吧?
lmzh171 2004-12-31
  • 打赏
  • 举报
回复
dui
非思丸智能 2004-12-31
  • 打赏
  • 举报
回复
sqlbean.executeQuery("select sum(Mount) as cnt from Requre1");
System.out.println(sqlbean.next());
你就先用这个把数据打出来,如果是异常,那你的数据库里就没有值,如果有值再用
if(rs.next()){................}
村北头的码农 2004-12-31
  • 打赏
  • 举报
回复
这样我也试过,如下:
int totalRecord=0;
ResultSet rs = sqlbean.executeQuery("SELECT SUM(TransferIQuantity) AS cnt FROM TransferIMaster");
try
{
if(rs.next())//加上这句后就出现java.lang.NullPointerException
{
totalRecord = rs.getInt("cnt");

}
}
catch(java.lang.NullPointerException e)
{
totalRecord = 0;
}
还是取不到值,totalRecord是null值。
tom2005 2004-12-31
  • 打赏
  • 举报
回复
这个是一个问题,一般是你把游标设为了滚动了,使用一些函数sun等时会出现

因为该列未包含在聚合函数中,并且没有 GROUP BY 子句

如果只是简单的查询

stat = conn.createStatement()这样就可以了


把游标设为了滚动,可以改一sql 语句

select sum(Mount) as cnt from Requre1 group by 0/Mount



if(sqlbean.next))
{
totalRecord = sqlbean.getInt("cnt");
}时

这里也不对吧
hollypansy 2004-12-31
  • 打赏
  • 举报
回复
是否有列数据为空?考虑使用sum(nvl(列名,0))
lmzh171 2004-12-31
  • 打赏
  • 举报
回复
sqlbean是什么东西?是你的bean的 id麽?还是说sqlbean是一个db?

sqlbean.executeQuery("select sum(Mount) as cnt from Requre1");的话,它应该返回一个纪录集的把

然后这个记录集(比如rs),使用if(rs.next()){................}
tonee 2004-12-31
  • 打赏
  • 举报
回复
sqlbean.executeQuery("select sum(Mount) as cnt from Requre1");
sqlbean.next();
totalRecord = sqlbean.getInt("cnt");

看看这样写对不对~
村北头的码农 2004-12-31
  • 打赏
  • 举报
回复
对,是sql server 数据库,用的是sql 驱动
村北头的码农 2004-12-31
  • 打赏
  • 举报
回复
在数据库中运行,能得到结果,我也认为是中间传值出了问题,但不清楚问题出在哪儿,如何改正呢?调试时,加上
sqlbean.next();出现异常,空指针。
不知道为什么中间传值出了问题?请指点!!!!
tom2005 2004-12-31
  • 打赏
  • 举报
回复
是sql server 数据库吧,用的是sql 驱动对吧
pigo 2004-12-31
  • 打赏
  • 举报
回复


猜测是数据类型不对,先 sqlbean.getString("cnt");打出来看看。

lmzh171 2004-12-31
  • 打赏
  • 举报
回复
简单,打log不就可以了麽

不过楼主没有说清楚,具体哪一行有问题
zhkchi 2004-12-31
  • 打赏
  • 举报
回复
关注中。。。。。。。。。。。
非思丸智能 2004-12-31
  • 打赏
  • 举报
回复
1§用控制台打出数据,看有没有得到数据,如果空指针,那一定是没有数据了,
2§你用sql在数据库里运行一下,看能不能得到结果,
3§如果可以,那就是中间传值出了问题
数据库的问题自己打印出来调试是最好的,一点点的走走,可能是什么问题真不好说!!
fzlotuscn 2004-12-31
  • 打赏
  • 举报
回复
好象TOP也不行呀

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧