.NET中利用SqlDataAdapter修改数据库中的表(数据库源)(转)

标题
      用SqlDataAdapter修改数据库中的表(数据源)
 
 【内容】
         /*
修改数据集中的表,软后保存到数据库中
传入的参数:
String sql=""

       sql+="select * from tb1";
       sql+=Environment.NewLine; 
       sql+="select * from tb2";
 
注意:查询语句必须要查询出表的所有字段。
      
*/
public void UpdateDataFromDSToDB(string sql)
        {
            SqlConnection conn = new SqlConnection(ADDbBase.SqlStr);

            SqlDataAdapter sda = new SqlDataAdapter();

     //下面的两句很关键,利用SqlCommandBuilder对象与一个合法的SelectCommand对象,
     //来填充SqlDataAdapter 对象的全部4个命令属性
            sda.SelectCommand = new SqlCommand(sql,conn);
 
            SqlCommandBuilder scb = new SqlCommandBuilder(sda); 

            conn.Open();

            DataSet ds = new DataSet();
            sda.Fill(ds);

            //modify data in dataset
            DataTable dtOne = ds.Tables[0];
            DataTable dtTwo = ds.Tables[1];
    
            for(int i=0; i<dtOne.Rows.Count; i++)
            {
                bool modify = false;
                int num = 0;
                for(int j=0; j<dtTwo.Rows.Count; j++)
                {
                    if(dtOne.Rows[i]["cateInherit"].ToString() == dtTwo.Rows[j]["cateUpID"].ToString())
                    {
                        dtTwo.Rows[j]["cateUpID"] = dtOne.Rows[i]["cateid"];
                        modify = true;
                        num++;
                    }
                    else
                    {
                        modify = false;
                    }

                    if(modify == false && num != 0)
                    {
                        break;
                    }
                }
            }
            

            try
            {
               //修改数据源,Update方法首先获取DataTable对象的变化情况,然后逐行地修改
        //在ADO.NET 2.0中,可以在Update之前设置UpdateBatchSize的值,以一批修改多条记录的方式
        //发送给数据库,来提高性能
                sda.Update(dtTwo);
            }
            catch(Exception ex)
            {
                Util.AlertMesg(ex.Message); //Util是自己定义的方法
            }
            finally
            {
                conn.Close();
            }

        }

posted @ 2007-01-19 22:35  海浪~~  阅读(431)  评论(0编辑  收藏  举报