如果不是web形式,建议用ado而不用ado.net

解决方案 »

  1.   

    在update的时候,用循环操作DataSet中每个表
    你用CommandBuilder,这样的话就不需要自己写Command了。
    for(int i=0;i<ds.Tables.Count;i++)
    {
    System.Data.OleDb.OleDbAdapter adp=new System.Data.OleDb.OleDbAdapter("Select * from " + ds.Tables[i].TableName + " where 1=2",conn);
    adp.
    System.Data.OleDb.OleDbCommandBuilder cb=New System.Data.OleDb.OleDbCommandBuilder(adp);
    adp.Update(ds.Tables[0]);
    }
      

  2.   

    System.Data.OleDb.OleDbCommandBuilder CommandBuilder = new System.Data.OleDb.OleDbCommandBuilder(Adapter);commandbuilder会根据select语句来构造insert等语句。
      

  3.   

    事实证明CommandBuilder并不是想象中的那么好使
    推荐你通过逻辑控制实现不同的操作
    如果是插入,这样书写:
    adp.InsertCommand=new SqlCommand("insert into ....",new SqlConnection(CNString));
    adp.InsertCommand.CommandType=CommandType.CommandText;
    adp.Update(ds);
    如果是删除:
    adp.DeleteCommand=new SqlCommand("delete from ...",new SqlConnection(CNString));
    adp.DeleteCommand.CommandType=CommandType.CommandText;
    adp.Update(ds);
    更新同上,只要把Command改成UpdateCommand就行了。