update在调用前必须显式的定义诸如InsertCommand、DeleteCommand和updateCommand命令,不允许这样修改。比如:
public DataSet CreateCmdsAndUpdate(DataSet myDataSet,string myConnection,string mySelectQuery,string myTableName) 
{
    OleDbConnection myConn = new OleDbConnection(myConnection);
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
    myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
    OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);    myConn.Open();    DataSet custDS = new DataSet();
    myDataAdapter.Fill(custDS);    myDataAdapter.Update(custDS);    myConn.Close();    return custDS;
 }

解决方案 »

  1.   

    注意上面的OleDbCommandBuilder,由他来指定Update执行的操作
      

  2.   

    如果未指定 INSERT、UPDATE 或 DELETE 语句,Update 方法会生成异常。但是,如果设置 .NET Framework 数据提供程序的 SelectCommand 属性,则可以创建 SqlCommandBuilder 或 OleDbCommandBuilder 对象来为单个表更新自动生成 SQL 语句。然后,CommandBuilder 将生成其他任何未设置的 SQL 语句。此生成逻辑要求 DataSet 中存在键列信息。
      

  3.   

    你的Categories表没有主键,加上再试
      

  4.   

    请问 keanu1978(黄金安魂曲)myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);这句代码中的mySelectQuery应是什么字符串了。如果mySelectQuery="UPDATE Categories"这个好象只能一行行的更新,不能一下全部更新哦。麻烦!!!