一个笨办法(目前好像也就是这么一个办法了):
  1. 先用select * from yourTable where 1=0获取一个DataSet1,(注:一定要在Fill之前先绑定一个CommandBuilder)
  2. 将你的DataSet中的数据逐个Add到1中生成的DataSet中
  3. 用1中生成的myAdapter.Update(DataSet1);
  4. Close connection就可以了!

解决方案 »

  1.   

    建议在业务逻辑层中完成你操作(作为分层结构这个非常清晰,从你上面的描述感觉你将你的业务逻辑处理是放在WEB SERVICE中的,而不是将业务逻辑层分离出来,这样的处理对于你的系统的维护可能不是很好,你认真想下就知道了,如果你的业务逻辑更改了,你怎么更好的进行维护更新呢?),至于采用的方式你可以使用SQL,存储过程,JOB等,然后在系统载入时作为初始化处理
      

  2.   

    Fill a DataSet from a Data Source and Update Another Data Source by Using Visual C# .NEThttp://support.microsoft.com/default.aspx?scid=kb;EN-US;313028
      

  3.   

    glboy(星毅) 兄,可能是我将问题描述的不是很清楚,我是需要将远程数据本地化,不应该放到Web Services上吧,所以应该从WS上取得DataSet 然后再写到本地的MSDE数据库中吧?
      

  4.   

    iFei(一日朋友)
    你的描述是对的,我给你的建议只是希望你将其具体实现不要完全放在WEB SERVICE端(而是将web service作为一个接口来看待),如果你以后在这一块的实现逻辑或优化这块的时候你就可以独立来更新维护这块,即瘦web service中business process,而这里bp编译后是形成DLL文件的,这样对你今后的可维护要更好,
      

  5.   

    前面描述有错,
    瘦web service中business process
    我的意思是瘦web service(作为接口,现在很多人都将BP封装在了这块,实际上这是一种不值得推荐的处理方式,个人观点,呵呵),胖business process,当然你要根据自己的系统设计做负载的平衡,具体的自己把握。一家之谈啊,:)
      

  6.   

    真诚的希望有作的这种数据转存的朋友帮忙,有没有好的办法实现DataSet保存到本地MSDE数据库的方法?我不想用循环生成SQL语句,现在用UPDATE就是保存数据不成功,哪位仁兄对DataSet比较熟悉,望不吝赐教。
    对了,前面的 project()老兄说的方法我试过了,还是不能保存,并且现在的问题不是要UPDATE的DataSet没有数据,而是里面的数据根本没有保存回数据源----本地的MSDE数据库。代码如下:
    //dsRemote是从Web Services取得的DataSet
    DataSet dsTemp=new DataSet();
    strSql="Select * from " + strTableName ;

    SqlCommand myCommand = new SqlCommand(strSql,objCn);
    SqlDataAdapter  myAdapter=new SqlDataAdapter(myCommand); 
    SqlCommandBuilder myCommandB=new SqlCommandBuilder(myAdapter);
    myAdapter.InsertCommand =myCommandB.GetInsertCommand(); //objAdapter=new SqlDataAdapter(strSql,objCn);
    myAdapter.Fill(dsTemp,strTableName);
    //dsTemp.Merge(dsRemote);
    foreach(DataRow dr in dsRemote.Tables[0].Rows)
    {
    DataRow row=dsTemp.Tables [strTableName].NewRow();
    row.ItemArray=dr.ItemArray;
    dsTemp.Tables [strTableName].Rows.Add(row);
    }
    dsTemp.AcceptChanges();
    myAdapter.Update(dsTemp,strTableName);
    数据始终保存不到数据库中。
      

  7.   

    //dsRemote是从Web Services取得的DataSet
    DataSet dsTemp=new DataSet();
    strSql="Select * from " + strTableName ;SqlCommand myCommand = new SqlCommand(strSql,objCn);
    SqlDataAdapter  myAdapter=new SqlDataAdapter(myCommand); 
    SqlCommandBuilder myCommandB=new SqlCommandBuilder(myAdapter);
    myAdapter.InsertCommand =myCommandB.GetInsertCommand();//objAdapter=new SqlDataAdapter(strSql,objCn);
    myAdapter.Fill(dsTemp,strTableName);
    //dsTemp.Merge(dsRemote);
    foreach(DataRow dr in dsRemote.Tables[0].Rows)
    {
    DataRow row=dsTemp.Tables [strTableName].NewRow();
    row.ItemArray=dr.ItemArray;
    dsTemp.Tables [strTableName].Rows.Add(row);
    }
    dsTemp.AcceptChanges();
    myAdapter.Update(dsTemp,strTableName);
      

  8.   

    // foreach(DataRow dr in dsRemote.Tables[0].Rows)
    // {
    // DataRow row=dsTemp.Tables[strTableName].NewRow();
    // row.ItemArray=dr.ItemArray;
    // dsTemp.Tables[strTableName].Rows.Add(row);
    // }
    先从源DS将数据ADD到目标DS,然后再UPDATE,再AcceptChanges();
    顺序最重要