我在一个类里面写了个方法,返回DataSet类型.public System.Data.DataSet GetAllCfxmflyjInfo(string id) 

    System.Data.DataSet functionReturnValue = null; 
    functionReturnValue = null; 
    string strSql = ""; 
    strSql = "select FLFG"; 
    strSql = strSql + " from 事项 where ID=" + id; 
    
    DataSet datCfxmDatSet = new DataSet(); 
    OracleDataAdapter da; 
    OracleConnection oraConn = new OracleConnection(s_MapgisConn); 
    
    try { 
        oraConn.Open(); 
        da = new OracleDataAdapter(strSql, oraConn); 
        
        da.Fill(datCfxmDatSet, "行政处罚事项"); 
        functionReturnValue = datCfxmDatSet; 
    } 
    catch (Exception ex) { 
        functionReturnValue = null; 
    } 
    finally { 
        oraConn.Close(); 
        datCfxmDatSet = null; 
        da = null; 
        oraConn = null; 
        
    } 
    return functionReturnValue; 
} 在别的页面我直接NEW()一下,然后调用这个方法,可以把数据取出来放在页面!但我把它放在webService中[WebMethod()] 
public System.Data.DataSet GetCfxmFlfgInfo(ref string id) 

    OracleDAL.XMCFINFO CfxmFlfg = new OracleDAL.XMCFINFO(); 
    return CfxmFlfg.GetAllCfxmflyjInfo(id); 
} 然后在页面调用webService中的GetCfxmFlfgInfo()方法的时候,却取不出来值,请告诉我这个是怎么会事情
请高手帮我写点具体代码来实现!怎么调用才可以取出来值.十万火急!

解决方案 »

  1.   

    把你的return下在里面public System.Data.DataSet GetAllCfxmflyjInfo(string id) 

        System.Data.DataSet functionReturnValue = null; 
        functionReturnValue = null; 
        string strSql = ""; 
        strSql = "select FLFG"; 
        strSql = strSql + " from 事项 where ID=" + id; 
        
        DataSet datCfxmDatSet = new DataSet(); 
        OracleDataAdapter da; 
        OracleConnection oraConn = new OracleConnection(s_MapgisConn); 
        
        try { 
            oraConn.Open(); 
            da = new OracleDataAdapter(strSql, oraConn); 
            
            da.Fill(datCfxmDatSet, "行政处罚事项"); 
            functionReturnValue = datCfxmDatSet; 
           return functionReturnValue;   //here return    } 
        catch (Exception ex) { 
            functionReturnValue = null; 
        } 
        finally { 
            oraConn.Close(); 
            datCfxmDatSet = null; 
            da = null; 
            oraConn = null; 
            
        } 
        } 
      

  2.   

    finally总要执行,这样的话原来的写法在return之前就 datCfxmDatSet = null; 
    当然什么都没有了~
      

  3.   

    不好意思,看错了,你释放的是datCfxmDatSet 
    return 的是functionReturnValue,应该不存在我说的问题~
      

  4.   

    可以用        functionReturnValue = datCfxmDatSet.Copy();
    试一下看可不可以
    不可以再找其它原因 
      

  5.   

    return functionReturnValue; 把这句放在try里面应该就可以了。
    finally总是要执行的。
    放在后面肯定是null听。