关联的一般不可以update,应该把dataSet内容用update语句写到表中

解决方案 »

  1.   

    update方法执行的实际就是insert,update,delete等SQL语句,这些语句一次只能更新一个表。多表联合查询得到的DataSet实际相当于View,里面的数据虽然可以从多个表里取出里,但更新时只能更新一个表,可能也可以写额外的控制逻辑更新多个表(我没这么做个,不敢肯定)。我觉得最好换个思路,将table1,table2分别fill到同一个DataSet的不同DataTable里,这样好做一些。
      

  2.   

    自己去写个代码update一下不就明白了吗,楼主可以更新一下table1看看结果
      

  3.   

    直接写update语句更新就行了,不用管select
      

  4.   

    <可以更新,以什么条件从哪个表中读出来就以什么条件更新到哪个表中去.DataSet更新时记录的字段对应从数据库表中所对应的记录的字段>
    //数据对象初始化
    string strConnection;
    string strSQL;

    DataSet objDataSet =  new DataSet();
    SqlConnection objConnection;
    SqlDataAdapter objAdapter;//连接字符串
    strConnection = "";//SQL指令
    strSQL = "select table1.item1,table2.item2 from table1,table2 where table1.id = table2.subid";
    objConnection = new SqlConnection(strConnection);
    objAdapter = new SqlDataAdapter(strSQL,objConnection);
    objAdapter.Fill(objDataSet,"TempTable");/*数据绑定 DataSource = objDataSet.Tables("TempTable").DefaultView*/
    /*通过控件更新DataSet过程略..*/

    //更新代码初始化SqlCommandBuilder objBuilder = new SqlCommandBuilder(objAdapter);
    objAdapter.UpdateCommand = objBuilder.GetUpdateCommand();
    objAdapter.InsertCommand = objBuilder.GetInsertCommand();
    objAdapter.DeleteCommand = objBuilder.GetDeleteCommand();

    //更新数据库objAdapter.Update(objDataSet,"TempTable");
      

  5.   

    自己写更新语句,
    因为多表关联的数据适配器不能自动生成UpdataeCommand 、InsertCommand 、DeleteCommand
    其实自己写的才好用