我从多张关联表创建了一个dataset,并以datagrid表示数据,修改数据后,如何再用dataset把数据更新到数据库中的相关的多张关联表呢?

解决方案 »

  1.   

    用DataSet,自动更新,参考这里 http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=51738
      

  2.   

    我指的情况是:
    用strSql= "select 表1.id,表2.name,表3.text1 from 表1 inner join 表2 on 表1.id1 = 表2.id1 inner join  表3  on ... ";
    db_sqladapter = new SqlDataAdapter(strSql,conn);
    db_sqladapter.Fill(myDataSet,table_name);
    datagrid1.DataSource = myDataSet.Tables[tableName].DefaultView;
    datagrid1.DataBind();
    这样的语句绑定datagrid1并显示,现在修改datagrid后,要更新数据库中这3张表的数据,如何实现?我知道有个批量更新一张表的方法,如下:
    /// <summary>
    /// 用DataSet实现批量更新数据库 
    /// </summary>
    public DataSet UpdateByDataSet(DataSet my_DataSet,string table_name)
    {        
    db_sqladapter = CreateDataAadapter(table_name);
    SqlCommand myCommand = new SqlCommand("select * from "+table_name,conn);    
    db_sqladapter.SelectCommand = myCommand;
    SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(db_sqladapter);     
    try {  
    lock(this)            //处理并发情况(分布式情况) {
    db_sqladapter.Update(my_DataSet,table_name);  
    } }  
    catch(Exception err)
    {
    conn.Close();   
    Console.WriteLine("Exception:"+err.ToString() );
    }
    return my_DataSet;    //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的my_DataSet
    }
    但是,用这方法好像不能实现这种情况下的多张表的数据库更新?有啥方法呢?