update的方法是
         
SqlDataAdapter adapter= new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.Connection  = new SqlConnection(ConnectionString);adapter.SelectedCommand.CommadText="select * ......";
DataSet ds=new DataSet;
adapter.FillData(ds,"myTable");
.
.
.
.
adapter.Update(ds,"myTabel");问题是在很多情况下可能并不保留adapter的状态,例如在一个三层结构中,特别在使用webservice的时候,这时候adapter.Update(...)的adapter已经不是原来的adapter了,解决方法应该是有的,重新构建一个adapter2,重新Fill一个DataSet如ds2,然后把ds1的内容付给ds2,adapter.Update(ds2,"myTable"),但这样重新Fill这一步不是要花费时间浪费资源吗?有没有什么好的办法?

解决方案 »

  1.   

    Fill可以做到几乎不花时间,改==》//(一个空查询,返回schema)
    adapter.SelectedCommand.CommadText="select * from 一个表 where 1=2";
      

  2.   

    把adapter和ds定义为静态变量!
      

  3.   

    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  4.   

    你可以在程序中获得dataadapter,然后把这个dataadapter作为参数传给你的服务啊!
      

  5.   

    如果要一个简单的方法,可以把adapter作为参数,那肯定是同一个了
      

  6.   

    如果真觉得需要把DataAdapter实例作为静态的类成员,
    或者用单件模式实现,不过没有必要,而前多线程情况下会出现connection正在被使用的问题,
    建议使用Data Access block.
      

  7.   

    不明白为什么一定要原来的那个DataAdapter
      

  8.   

    application block will give you a pleasure answer
    search that in msdn with "application block" as the key words
    then download the data access application block and do an analysis
      

  9.   

    不耗时
    SqlConnection最好随用随关,
    SqlConnection _conn = new SqlConnection( …… );
    {
       _conn.Open();
    }
    catch(Exception)

       ……
    }
    finally
    {
       _conn.Close();
    }