按MSDN 中的方法,使用数据适配器和数据集,“更新”按钮的代码如下:
oleDbDataAdapter1.Update(lll1);
MessageBox.Show("Database updated!");
修改datagrid中的数据后,按“更新”按钮,出现一个对话框,内容如下:
“未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。
其他信息: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。”并询问是中断还是继续或帮助,重新做了几次都这样,为什么呀?

解决方案 »

  1.   

    应该设置oleDbDataAdapter1.UpdateCommand对象.
    public static DataSet SelectOleDbSrvRows(string myConnection, string mySelectQuery, string myTableName)
    {
       OleDbConnection myConn = new OleDbConnection(myConnection);
       OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
       myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
       OleDbCommandBuilder cb = new OleDbCommandBuilder(myDataAdapter);   myConn.Open();   DataSet ds = new DataSet();
       myDataAdapter.Fill(ds, myTableName);   //code to modify data in DataSet here   //Without the OleDbCommandBuilder this line would fail
       myDataAdapter.Update(ds, myTableName);   myConn.Close();   return ds;
    }
      

  2.   

    需要用CommandBuilder来生成更新命令,对单个实体表进行CommandBuilder更新的话,需要DataSet中具有和实体表同样的主键等表框架信息
      

  3.   

    我用的是向导,在更新按钮里的代码只有oleDbDataAdapter1.Update(lll1);
    MessageBox.Show("Database updated!");两行,请说一下如何修改这些代码,而不是重写
    ,请帮忙看一下吧,到底为什么不能更新?