这SqlDataAdapter的update难道就这么难用,这样的代码没有错啊,怎么还是更新不了?
运行程序不报错,但就是没有任何的插入,更新,删除的动作,也就是数据库啥都没变DataSet ds=new DataSet();
ds=GetDataSet();//得到一个改过的DataSet
ds.Tables["test"].PrimaryKey=new DataColumn[]{ds.Tables["test"].Columns["id"]};DataSet catDS=new DataSet();
SqlConnection conn=new SqlConnection();
conn.Open();SqlDataAdapter cmd=new SqlDataAdapter("SELECT id, name FROM test", conn);
catDS.Tables["test"].PrimaryKey=new DataColumn[]{catDS.Tables["test"].Columns["id"]};SqlCommandBuilder scb=new SqlCommandBuilder(cmd);catDS.Merge(ds);
cmd.Update(catDS,"test");

解决方案 »

  1.   

    你应该先cmd.Fill(catDS)DataSet ds=new DataSet();
    ds=GetDataSet();//得到一个改过的DataSet
    ds.Tables["test"].PrimaryKey=new DataColumn[]{ds.Tables["test"].Columns["id"]};DataSet catDS=new DataSet();
    SqlConnection conn=new SqlConnection();
    conn.Open();SqlDataAdapter cmd=new SqlDataAdapter("SELECT id, name FROM test", conn);
    catDS.Tables["test"].PrimaryKey=new DataColumn[]{catDS.Tables["test"].Columns["id"]};
    cmd.Fill(catDS);
    SqlCommandBuilder scb=new SqlCommandBuilder(cmd);catDS.Merge(ds);
    cmd.Update(catDS,"test");
      

  2.   

    兄弟,你要在update之前加一个
    cmd.TableMappings.Add("test","test");
    后面的参数是你数据库的表名,前面的是指dataset中的表名。
      

  3.   

    问题出在
    DataSet catDS = new DataSet();
    ....
    catDS.Merge(ds); //这里,你确认表还叫"test"吗,应该叫“table”在update之前加一个
    cmd.TableMappings.Add("Table","test");
    后面的参数是你数据库的表名,前面的是指dataset中的表名。再试。
    你可以参考我写的一相数据更新器类
    http://spaces.msn.com/members/weisunding/Blog/cns!1p7VkOoAZPuMFtn9p9N4dWNw!106.entry
      

  4.   

    在看看你的update的四个语句全吗?最好都写上。
      

  5.   

    to weisunding(鼎鼎) 
    catDS.Merge(ds); //这里,你确认表还叫"test"吗,应该叫“table”我输出catDS的表名,是叫test
      

  6.   

    头大了,我用Update都没问题啊 :)
      

  7.   

    我头更大,都搞不懂为啥,句句都没有错的dingding的QQ是多少,我加你
      

  8.   

    你的catDS我怎么没看出来有改动啊?
      

  9.   

    cmd.Fill(catDS)
    这句加上也不管用?
    我用都行了,你看我这个程序,虽然简单点,但原理一样的
    SqlDataAdapter adapter=new SqlDataAdapter(Sql,thisConnection);
    DataSet data=new DataSet();
    SqlCommandBuilder builder=new SqlCommandBuilder(adapter);
    adapter.Fill(data,"Customers");
    data.Tablese["Customers"].Rows[0]["CompanyName"]="CompanyName1";
    ………………(修改DataSet的内容)adapter.Update(data,"Customers");就完工了
      

  10.   

    to fengyunyubin(风云) 这样是可以的,我这样试了,也能更新,但是传一个DataSet就不行啊
      

  11.   

    我也是ADO.NET刚入门的
    现在看了头都大了
      

  12.   

    我用了SQL语句,也是不行呀,气晕我了
      

  13.   

    不写表名,写ds.Tables[0] 试试,你还是要加上断点跟踪调试一下
      

  14.   

    什么意思?传DataSet是什么意思
      

  15.   

    参考方式
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  16.   

    SqlCommandBuilder CmdBudr;
    CmdBudr = new SqlCommandBuilder( cmd);
      

  17.   

    將merge那句話給放到最后面﹐應該是更新之后才調用它