有没有出现异常?异常信息是什么?
另外,把
UPDATE test SET test1 = 9 WHERE test2 = 'qq'帖到你sql查询分析器里试试

解决方案 »

  1.   

    是不是没有打开数据库。
      SqlConnection conn=new SqlConnection();
      在
      DataSet catDS = new DataSet();下加一句
      conn.Open();
      catDA.Fill(catDS, "test");
      catDA.Update(catDS,"test");
      conn.Close();
      

  2.   

    UPDATE test SET test1 = 9 WHERE test2 = 'qq'
    这句没有问题。对了,忘了说了,上面那些代码我已经用try了,可是没有抛出任何异常。楼上兄弟,你自己可以写一个这样例子试试
      

  3.   

    不好意思,我粘帖子的时候漏掉了,这是我粘的完整的代码,执行后没有任何异常报告。数据库也没有更新,各位兄看看我这样写是否有什么不对?你们可以自己粘这段代码试一试!
    try
    {
    System.Data.SqlClient.SqlConnection myConnection = new SqlConnection("Data Source=10.0.0.66;Initial Catalog=test;user id=sa;password=dy123;Integrated Security=SSPI");
    SqlDataAdapter catDA = new SqlDataAdapter();     
    catDA.SelectCommand = new SqlCommand("select * from test", myConnection);
    catDA.UpdateCommand = new SqlCommand("UPDATE test SET test1 =0 WHERE test2 = 'ww'" , myConnection);
    SqlCommandBuilder custCB = new SqlCommandBuilder(catDA);
    myConnection.Open();
    DataSet catDS = new DataSet();
    catDA.Fill(catDS, "test"); 
    catDA.Update(catDS,"test");
    myConnection.Close();
    MessageBox.Show("dd");
    }
    catch(Exception e1){MessageBox.Show(e1.ToString());}
      

  4.   

    可是很奇怪我在catDA.Fill(catDS, "test"); 之后加上
    DataRow cRow = catDS.Tables["test"].Rows[0];
    cRow["test2"] = cRow["test2"];
    就ok了!迷惑!!
      

  5.   

    我从来就是直接对数据库进行操作,我觉得直接,用DataSet更新数据库我用过一次后就不用了,实在太麻烦。
      

  6.   

    我很少用这个类:SqlCommandBuilder 
      

  7.   

    楼主这个问题挺奇怪的。Update方法的文档如下:
    当应用程序调用 Update 方法时,DbDataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT、UPDATE 或 DELETE 语句。例如,由于 DataTable 中行的排序,Update 可能先执行一个 DELETE 语句,接着执行一个 INSERT 语句,然后再执行另一个 DELETE 语句。应注意,这些语句不是作为批处理进程执行的;每一行都是单独更新的。在必须控制语句类型顺序的情况下(例如,INSERT 在 UPDATE 之前),应用程序可以调用 GetChanges 方法。有关更多信息,请参见使用 DataAdapter 和 DataSet 更新数据库。如果未指定 INSERT、UPDATE 或 DELETE 语句,Update 方法会生成异常。但是,如果设置 .NET Framework 数据提供程序的 SelectCommand 属性,则可以创建 SqlCommandBuilder 或 OleDbCommandBuilder 对象来为单个表更新自动生成 SQL 语句。然后,CommandBuilder 将生成其他任何未设置的 SQL 语句。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息,请参见自动生成的命令。
      

  8.   

    我的理解:你实例化了DataSet,但没有给DataSet付类型。相当于在数据库里新建一个数据库,但里面没有表。
    你用了DataRow cRow = catDS.Tables["test"].Rows[0];
    cRow["test2"] = cRow["test2"];
    相当于给DataRow赋值了。
    其实在更改DataSet时,主要修改的时DataTable,DataRow,在Update到数据库时也要看DataTable和DataRow的属性,如xixigongzhu(夕夕公主)所言。
      

  9.   

    我觉得也挺奇怪的,如xixigongzhu(夕夕公主)所言,我怀疑是RowState 属性的问题,我建议先把所有changed的数据放到另一个dataset1 中,再catDA.Update(dataset1 ,"test");
      

  10.   

    DataSet catDS = new DataSet();放在myConnection.Open();前面.