• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中用SqlDataAdapter修改数据库中的表(源码+注意的细节)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


标题
      C#中用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();
            }

        }


【注意的细节】

   1、UpdateDataFromDSToDB是封装的方法,参数为SQL语句。这里表示从两张表中查询数据。
      其中SQL语句必须要查询出表的所有字段。

   2、ADDbBase.SqlStr:数据库连接字符串,ADDbBase是我自己定义类
  
   3 、
      sda.SelectCommand = new SqlCommand(sql,conn);
      
SqlCommandBuilder scb = new SqlCommandBuilder(sda); 
      这两句很关键,请参考上面的说明。
  
  4、sda.Update(dtTwo),这里不能使用sda.Update(ds ),否则,即时不报错,但数据源并没有更新。
        其中dtTwo为已经修改了的表;ds表示数据集,其中有dtOne 和dtTwo两张表,但是dtOne没有被修
        改。
 
  5、UpdateDataFromDSToDB方法的参数值如下:
       sql+="select * from tb1";
       sql+=Environment.NewLine; 
       sql+="select * from tb2";
   
        通过该Sql 命令,获得两张表,并填充到数据集对象中

 【Tags】C#,MS SQL, DataSet,SqlDataAdapter
      


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#使用emit方法DB,实体相互转换发布时间:2022-07-13
下一篇:
C#构造函数、属性的应用发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap