这么简单的东西搞了一晚上也没搞通,教科书上的代码呀,以往直接用insert往里插可以,今天用update更新怎么都插不进数据库里,更新时也不报错,就是数据库里没记录。
数据库是access,有主键,oleDbConnection2打开正常
                DataSet ds = new DataSet();
                OleDbDataAdapter da = new OleDbDataAdapter( "select * from    dept",oleDbConnection2);
                OleDbCommandBuilder db = new OleDbCommandBuilder(da);
                da.FillSchema(ds, SchemaType.Source, "a");
                da.Fill(ds, "a");
                DataRow dr =ds.Tables[0].NewRow();
                dr.BeginEdit();
                dr["dept_code"] = "123";
                dr["dept_name"] = "456";
                dr["py_code"] = "789";
                ds.Tables[0].Rows.Add(dr);
                dr.EndEdit();
                ds.Tables[0].AcceptChanges();
                da.Update(ds, "a");

解决方案 »

  1.   

    用 update 语句改不得了,搞这么麻烦...
      

  2.   

    如果你要这么做的话,需要设置 InsertCommand\UpdateCommand\DeleteCommand等,我没有成功过此外,你可以使用ds.GetChanges()获取改变的几条记录
    然后写入数据库就看你的了
      

  3.   

    两个错误,一个是你没有设置da.UpdateCommand,另一个是你在调用da.Update之前就已经将ds.Tables[0].AcceptChanges()了,AcceptChanges方法会将DataTable的所有RowStatus重置,变为未改变,这个一般都是让da自动调用的,你却手动去调用。
      

  4.   

    直接用绑定好的oleDbDataAdapter也不行,oleDbDataAdapter1有生成好了的insertcommand及其参数配置,也不行。
                      DataSet ds = new DataSet(); 
                    oleDbDataAdapter1.FillSchema(ds, SchemaType.Source, "a");
                    oleDbDataAdapter1.Fill(ds, "a");
                    DataRow dr =ds.Tables[0].NewRow(); 
                    dr.BeginEdit(); 
                    dr["dept_code"] = "123"; 
                    dr["dept_name"] = "456"; 
                    dr["py_code"] = "789"; 
                    ds.Tables[0].Rows.Add(dr); 
                    dr.EndEdit(); 
                    oleDbDataAdapter1.Update(ds, "a");