GetResult(ref rs);
为什么要用ref??java中传递参数一般都认为只有传值,不是传引用(有时你也可以理解为传利用)

解决方案 »

  1.   

    更正:GetResult(ref rs);   --------没有ref的说!那么   treeroot(根根)   没有像我这样用的了!java不可以传引用么?
      

  2.   

    也许是这样:你在主函数中没有给rs分配内存。rs只是一个地址(俺有点混),引用或说别名,他只是代表指向一个rs对象。你在GetResult()函数中给他分配了,但是函数结束后main函数中的rs又成了孤魂野鬼---null了。
    建议你先在祝函数中实例化一下rs,z再给GetResult(rs);
    你可以先写几个小对象试一下。
      

  3.   

    //不知道这样能不能说明问题,呵呵//定义一个小对象
    class  obj{
    int a;
    int b;
      void  func(int s,int h){
      a =s;
      b =h;
      }
    }///主函数类
    public class func {//类似你的GetResult(rs)
    static void classFunc1(obj f){
     f.func(10,23);
    }static void classFunc2(obj f){
     f =new obj();
     f.func(12,20);
    }
    public static void main(String[] agrs){
      obj t1 = new obj();//  换成这样  obj t1;会报错的
      obj t2;
      classFunc1(t1);
      //这个函数也不成功
     // classFunc2(t2);
      System.out.println(t1.a +"  "+t1.b );}
    }
      

  4.   

    java中对函数传值为 拷贝,因此GetResult(rs) 为另外开辟了一块空间存放指向rs的“指针”。在GetResult中对rs赋值,函数结束后这个值也就消失了。但是,如果你在GetResult中对rs的属性做改变,则由于根据地址找到rs内存所在进行修改,函数退出后这个修改还是有效的。如果真想改变整个rs,则需要把rs作为一个对象的成员,传入这个对象,修改rs。也就是 Query1981() 的做法
      

  5.   

    我想问一下:楼上的 “因此GetResult(rs) 为另外开辟了一块空间存放指向rs的“指针”。“
    另外开辟了一块空间存放rs的“指针”   , 和我定义rs时的空间不同对不对!
      

  6.   

    各位高人们,你们到底是在讨论 java 还是讨论C#啊???如果是 java 的话,楼主的这条语句:
    GetResult(ref rs);
    怎么可能编译通得过啊!??
      

  7.   

    用法有误,用返回rs,public class Access
    {
    public static ResultSet GetResult()
    {
    Connection con;
    Statement stmt; try
    {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String strurl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\try.mdb";      con = DriverManager.getConnection(strurl) ; stmt = con.createStatement(); String query = "select * from try"; rs = stmt.executeQuery(query);
    if(rs == null){
    System.out.println("innner rs is null");
    }

    return rs;

    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    } public static void main(String[] args)
    {
    ResultSet rs = GetResult();
    if(rs == null){
    System.out.println("rs is null");
    return;
    }
    try
    {
    while (rs.next())
    {
    String str = rs.getString("title");
    System.out.println(str);
    }
    }
    catch(Exception e)
    {
    System.out.println(e.getMessage());
    }
    }}