| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1240 人关注过本帖
标题:关于数据库链接 返回NullPointerException的问题
只看楼主 加入收藏
liveno
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-16
收藏
 问题点数:0 回复次数:6 
关于数据库链接 返回NullPointerException的问题
try{
                query="select * from product where product_ID="+product_ID;
                rs=dbcon.query(query);
                if(rs==null){   
                        session.setAttribute("product_exist","false");
                }
                else{
                    while(rs.next()){
                        session.setAttribute("product_price",rs.getString("product_price"));
                        session.setAttribute("product_producer",rs.getString("product_producer"));
                        session.setAttribute("product_name",rs.getString("product_name"));
                    }
                }
                dbcon.close();
            }
            catch(SQLException   e){
                System.out.println("err:"+e.getMessage());
            }
主要的代码段就在这里了。
是去查询product中的商品,由于数据库中只有ID=1的项目,所以如果是查询1的话,是能够得到正确结果的。
可是当查询ID=2的商品时,rs应该返回一个空集吧?if(rs==null)这个是判断是否得到了一个查询集合,和空集不一样的。不管怎么说,NullPointerException这个错误是怎么出现的呢?
还请高手指教
搜索更多相关主题的帖子: product 数据库 session setAttribute 
2008-04-16 18:17
mszhou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-28
收藏
得分:0 
你都没说你是直连还是桥连
2008-04-17 14:32
qw654
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-4-10
收藏
得分:0 
好难看  我晕











" border="0" />
[url=http://www.]小游戏[/url]
2008-04-17 14:33
Starlove
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-4-26
收藏
得分:0 
估计是rs.getString有问题
打出来看一下
2008-04-18 15:24
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
收藏
得分:0 
好像即使没有查找到ResultSet也是不为NULL的(具体是不是,我也记不大清楚了),所以它不会进入if(rs==null)里面,而是进入到"else"里,这样rs.next()就会抛空指针异常.你可以设置断点跟踪一下程序的运行情况.或者直接直接打印ID=2时的rs的值看下.

[[it] 本帖最后由 菜鸟也疯狂 于 2008-4-20 22:47 编辑 [/it]]

2008-04-20 22:46
netstriker
Rank: 1
等 级:新手上路
威 望:1
帖 子:257
专家分:0
注 册:2007-3-24
收藏
得分:0 
我想问一下,你的意思是说如果在ID=2这种商品没有的话,不要报错,只是把这一个没有这一个结果放到ession.setAttribute("product_exist","false");,对吧;
     rs=dbcon.query(query);这一个查询后,是空集的话不一定是说rs这一个对象是空,只能说rs这一个集合没有值而已,或者你可以试一下用 先select count(*) from XXXXX,然后在数据集那里判断一下rs.getInt(1);如果返回的是0的话,则说明数据库里没有记录了。。。。。,如果还有什么问题的话,就继续提出来吧.......
2008-04-21 12:08
liveno
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-16
收藏
得分:0 
回复 6# 的帖子
谢谢netstriker和菜鸟也疯狂的回复。o(∩_∩)o

如netstriker你所说,我正是想通过判断rs是否是个空集合来觉得决定程序流程。可是该怎么判断呢?我试图将程序改成:
try{
                query="select count(*) from product where product_ID="+product_ID;
                rs=dbcon.query(query);
                if(rs.getInt(1)==0){   
                        session.setAttribute("product_exist","false");
                }
                else{
                query="select count * from product where product_ID="+product_ID;
                rs=dbcon.query(query);
                    while(rs.next()){
                        session.setAttribute("product_price",rs.getString("product_price"));
                        session.setAttribute("product_producer",rs.getString("product_producer"));

程序却出现了错误,连ID=1时的情况也出现了NullPointer的错误,是怎么回事呢?

我不能理解的是,当ID=1的时候是完全正确的结果,这应该说明我的sql语句是没有问题的吧?所以当ID=2而查询数据为空时,得到的rs应该是个空集(确实不是null),而while(rs.next())首先是判断rs.next()是否是null,但跟rs是否为null是完全两回事啊?我之所以用if(rs==null),就是为了表示rs是不为null的。这样说来,nullpointer这个错是哪里冒出来的呢?
2008-04-21 16:12
快速回复:关于数据库链接 返回NullPointerException的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033143 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved