import java.sql.*;
public class Test { Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

public static void select(){
String d = "oracle.jdbc.driver.OracleDriver";
try {
Class.forName(d);
conn = DriverManager.getConnection("jdbc:oracle:thin:" +
"@192.168.0.254:1521:open","root","1123");
String sql = "select * from t_user";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void list(){
Test.select();
while(rs.next()){
System.out.println(rs.getString(4));
}
}
}**********************************
报的错误是空指针异常
我知道当使用rs.next()的时候,需要在那个select的方法里返回rs,
但是我还是不太明白,为什么一定要返回一个rs,不是rs都有值了吗?
关于对象的引用和返回这块,很晕!
它们在内存里是咋样分布的?
请教各位大哥哥!!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【dp1123】截止到2008-07-14 20:53:38的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:20                       每贴平均分数:20                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    一开始的rs只是一个空的引用,
    在select运行时,rs指向一个具体的resultset
    这样list里才能访问
      

  3.   

    rs不是已经有值了吗?
    在那个select()方法里
    为什么还要返回?????
      

  4.   

    我没有返回那个rs
    就是在select()中没写那个
    publi static ResultSet select(){
             ....
       ...    return rs;
    }如果不写上面的那个就是空指针异常》
    为什么???
    请教中!!!
      

  5.   

    看了一下 方法写的就有问题。真的创建了test对象吗 ?
      

  6.   

    我调的是静态方法
    我也试了new Test();
    我想问得是为上面要在select()里返回那个rs
    不写的话就是空指针异常!!
      

  7.   

    问题在于,你定义的public static void select()是无返回赋值的静态方法,静态方法只可以访问静态变量,而ResultSet rs = null;是非静态的。所以当你调用public void list()时,rs人就是null;