不行就手工设置UpdateCommand属性

解决方案 »

  1.   

    因为我没有设定oleDbDataAdapter1中的三属性.UpdateCommand,.InsertCommand,.DeleteCommand那个没有相干.如果你的Ds.table[0]里面不仅有一张表的字段时,Update就会出错!比如:用select A.*,b.* from A inner join B on a.id = b.id返回的DataTable就用不了Update的方法.
      

  2.   

    DataTable table=dataSet1.Tables[0];
    dadaGrid1.DataSource=table;
    这样的语句建议合成一个
    dadaGrid1.DataSource=dataSet1.Tables[0];
      

  3.   

    手工设置四个DataAdapter的属性,
    DeleteCommand;
    UpdateCommand;
    SelectCommand;
    InsertCommand;
      

  4.   

    OleDbCommandBuilder cb1=new OleDbCommandBuilder(oleDbDataAdapter1); 
    // 此句能产生三个缺省的UpdateCommand,InsertCOmmand,DeleteCommand属性,
    但此句并不能使oleDbCommandBuilder把属性传给oleDbDataAdapter1,需赋值传
    过去:
    OleDbCommandBuilder cb1=new OleDbCommandBuilder(oleDbDataAdapter1); 
    oleDbDataAdapter1.UpdateCommand=cb1.GetUpdateCommand();
    oleDbDataAdapter1.InsertCommand=cb1.GetInsertCommand();
    oleDbDataAdapter1.DeleteCommand=cb1.GetDeleteCommand();
    DataTable table0=dataSet1.Tables[0];
    oleDbDataAdapter1.Update(table0);
    这样就会成功了
      

  5.   

    你可以用左边的工具栏的oleDbDataAdapter自动生成的代码。保证不会出问题。
      

  6.   

    to SeanChen(Sean):
    用oleDbDataAdapter的配置适置器向导能产生,不错!
    但既然它的向导能产生这三个SQL语句,为何这适配器
    OleDbDataAdapter自已不带直接产生的"方法"呢?