楼主,这样代码如何看.你还是将问题简约一下,或者给出代码的URI.
可能效果好些

解决方案 »

  1.   

    这样啊,传参数试试看,GetDataSet(ref DataSet ds)这样应该可以把ds的内容传过来得,我都是这么用的
      

  2.   

    我把代码简约一下,呵呵
    在一个类GetDbInfo中有一个方法GetDataSet,它返回一个DATASET,并把它编译成了一个DLL private DataSet objDataSet;
             private string strLibInfo = "haha"; public string LibInfo //返回状态
    {
    get{return strLibInfo;}
    } public DataSet GetDataSet() // 返回一个DATASET
    {
    objDataSet = new DataSet();
    try
    {
    objOleDbConnect = new OleDbConnection();
    objOleDataAdapter = new OleDbDataAdapter();
    objOleDbCommand = new OleDbCommand();
    objOleDbConnect.ConnectionString=@"连接数据库字串";
    objOleDbConnect.Open(); objOleDbCommand.Connection = objOleDbConnect;
    objOleDbCommand.CommandText = strSql;
    objOleDataAdapter.SelectCommand = objOleDbCommand;

    objOleDataAdapter.Fill(objDataSet,"resume");
    strLibInfo = "得到DataSet";

    }
    catch(Exception e)
    {
    strLibInfo = "出现错误:" + e.Message;
    }
    finally
    {
    objOleDbConnect.Close();
    objOleDbConnect.Dispose();
    objOleDataAdapter.Dispose();
    objOleDbCommand.Dispose();
    }
    return objDataSet;}
    在另一个WINFORM程序中引用了这个DLL,并实例化这个类
    DataSet objClientDataSet ;
    GetDbInfo objGetDbInfo = new GetDbInfo();
    objClientDataSet = objGetDbInfo.GetDataSet();程序执行正常,未出错,但objClientDataSet 是空的,并没有数据进来。
    SQL语句我试过了,是有记录的
    更奇怪的是LibInfo 返回的值是"haha",如果执行了GetDataSet这个方法的话那么
    LibInfo 的返回值应当是 "得到DataSet",这是为什么呢?楼上的,现在的问题是GetDataSet这个方法好象没有执行,所以用你的那个方法也一样不能返回DATASET,呵呵
      

  3.   

    应该是objOleDataAdapter.Fill(objDataSet,"resume");出错我没有测试过,不过可以肯定的是,选择出来的Table名称绝对不会是"resume",
    你可以print出来看看
      

  4.   

    我传入的SQL语句是 select * from [resume]
    所以表名是"resume"
      

  5.   

    SqlDataAdapter默认填充的表格名称为"Table","Table1","Table2"...
    可以使用DataMapping属性建立其与强类型数据集之间的关系,在Fill之前使用,
    这样SqlDataAdapter在填充的时候会自动根据映射关系填充到相应的数据表中
      

  6.   

    sorry,请你测试一下,结果不久出来了吗?
      

  7.   

    哥们你的意思是把
    objOleDataAdapter.Fill(objDataSet,"resume");
    这一句改为
    objOleDataAdapter.Fill(objDataSet);
    是吗?
    我这就试试
      

  8.   

    还是不行,呵呵
    感觉好象就没有执行getdateset这个方法
    objGetDbInfo.LibInfo 的值为"服务启动",按理说调用GetDataSet这个方法后它的值应当为"得到DataSet"才对呀
      

  9.   

    呵呵,实在无能为力了,还没有碰到这样的问题,我们做信息管理,DataAccess层访问n个数据表格好像也没有问题
      

  10.   

    给你个我的程序代码试一试吧 public ModuleData GetAllModuleData()
    {
    ModuleData ds = new ModuleData();
    using(SqlConnection conn = new SqlConnection(connectString))
    {
    SqlCommand cmd = new SqlCommand("权限_模块信息_SelectAll",conn);
    cmd.CommandType = CommandType.StoredProcedure;
    SqlDataAdapter sda = new SqlDataAdapter(cmd);
    sda.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
    new System.Data.Common.DataTableMapping("Table", "模块信息",
    new System.Data.Common.DataColumnMapping[] {
       new System.Data.Common.DataColumnMapping("模块编号", "模块编号"),
       new System.Data.Common.DataColumnMapping("模块名称", "模块名称"),
       new System.Data.Common.DataColumnMapping("父级层次", "父级层次"),
       new System.Data.Common.DataColumnMapping("子级层次", "子级层次"),
       new System.Data.Common.DataColumnMapping("装配件名称", "装配件名称"),
       new System.Data.Common.DataColumnMapping("启动类名", "启动类名"),
       new System.Data.Common.DataColumnMapping("启动方法", "启动方法"),
       new System.Data.Common.DataColumnMapping("资源文件", "资源文件"),
       new System.Data.Common.DataColumnMapping("资源空间", "资源空间"),
       new System.Data.Common.DataColumnMapping("资源名称", "资源名称")})
     });
    sda.Fill(ds);
    }
    return ds;
    }
      

  11.   

    现在的问题不是填充不到DATASET中,而是不去执行那个GetDataSet方法,不知为什么
    :(
      

  12.   

    你作的是远程处理吧,如果是的话,和我遇到的问题是相同的.问题可能出在远程处理上,如果采用服务端激活(SingleCall)的方式,服务端不保留对象,应该在你的GetDbInfo中使用构造函数,在构造函数中初始化dataset,然后在通过方法返回dataset.
      

  13.   

    大伙看看这个URI.
    www.21disk.com
    一般小的代码放在上面,得到URI.方便问和解答.
    hope it helps
      

  14.   

    moznan,的确是用的选程处理,我把它放到构造函数中试试,谢谢
    也谢谢其他的朋友们,我试试再来这发帖
      

  15.   

    现在又有新问题了,我新加了一个带参数的构造函数
    public GetDbInfo()
    {
    } public GetDbInfo(string strSqlVal)
    {
    objDataSet = new DataSet();
    连接数据库,填充DATASET.....
    }然后在客户端调用
    RemotingConfiguration.RegisterWellKnownClientType(typeof(GetDbInfo),"tcp://localhost:8085/SrvRemoting/GetRemotingDataSet");
    GetDbInfo objGetDbInfo = new GetDbInfo(strSql);

    报错"当正在连接已知对象时,不能运行非默认构造函数"

      

  16.   

    用Singleton就可返回这个datagset
    那么用SingleCall应当如何做呢
      

  17.   

    采用服务端激活的方式时,只能用默认的构造函数,本能带参数,要想带参数,只能用客户端激活
    Singleton和SingleCall的用法基本一样,差别就是singlecall不能保留状态,比如public interface IA
    {
      int function1();
      int function2();
    }public class A:MarshalByRefObject,IA
    {
      int i=0;
      public A()
      {
        i=100;
      }
      
      public int function1()
      {
        return i;
      }
        public int function1()
      {
        i+=100;
        return i;
      }
    }如果你用singlecall调用A的2个方法时,返回的结果function1总是100,function2总时200;因为在每次调用方法是,尽管使用的是同一个对象,总是先调用默认的构造函数