你是怎么复制到laDataSet的啊?
 OleDbConnection myConn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Application.StartupPath+@"\mctest.mdb");
    myConn.Open();
    OleDbDataAdapter myAdapter= new OleDbDataAdapter("SELECT * from wenzhang",myConn);
myConn.open();
myAdapter.Fill(laDataSet,"表名");  //在dataset中得到数据库中的数据
myConn.close();
修改后用
myConn.open();
myAdapter.Updata(laDataSet,"表名");
myConn.close();

解决方案 »

  1.   

    如果数据库中有重复得记录或无主键就会报错,使用CommandBuilder 就会说"不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成"。
      

  2.   

    看你的代码,好象少了
    myAdapter.Fill(laDataSet,"表名"); 如果你的DS填充数据使用的表名与UPDATE使用的表名不同是不行的。另外,应该有主键,这样,DS才可以根据关键字更新。
      

  3.   

    可以考虑自己写一个SQL BUILDER类
    直接使用COMMANDBUILDER类容易产生并发冲突
      

  4.   

    用.net提供的工具吧。在窗体上放一个datagridt和OleDbDataAdapter。建立链接后选中OleDbDataAdapter,在菜单上选“数据--生成结果集”。就会自动生成一个dataset对象。还会自动生成update语句。只要用OleDbDataAdapter.update(dataset)就可更新数据库了。
      

  5.   

    下面是我从库向全局变量laDataSet复制表内容的代码。并将laDataSet和dataGrid1控件邦定。
        OleDbConnection myConn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Application.StartupPath+@"\mctest.mdb");
        myConn.Open();
        OleDbDataAdapter myAdapter= new OleDbDataAdapter("SELECT * from wenzhang",myConn);
        myAdapter.Fill(laDataSet,"myTable");
        dataGrid1.DataSource = laDataSet.Tables["myTable"];
        myConn.Close();我的DS填充数据使用的表名与UPDATE使用的表名是一样的。应该是没有主健的缘故吧?UPDATE过程在另一个事件中,请给出UPDATA的代码好吗?
      

  6.   

    如果按TongXiong(铜熊)所说的
    -----------------
      修改后用
      myConn.open();
      myAdapter.Updata(laDataSet,"myTable");
      myConn.close();
    -----------------------
    将在myAdapter.Updata(laDataSet,"myTable");此句出错,提示为:
    未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。
    其他信息: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。
      

  7.   

    搞定了, CMIC(大象) ( )  bankliu(他们也在对付,反正他们赚的钱比我们多!) triout(笨牛) 说的对,我去创建了主健,就一切正常了。