• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SqlCommandBuilder如何实现批量更新

    一般是这样的,如果用设计器将SqlDataAdapter拖到页面中使用时,不会出现SqlDataAdapter.Update(ds)更新时出错情况,因为系统会自动生成SqlDataAdapter的属性命令,比如: .UpdateCommane insertCommand selectCommand等。  但是有些程序员不喜欢用设计器,或者是有些地方没必要拖动SqlDataAdapter这么个庞大物来实现,那么SqlDataAdapter就不会自动生成相关的查询或更新语句了。 所以当执行到SqlDataAdapter.Update(ds)语句时,SqlDataAdapter桥接器不知道更新哪个表不报错了。
    解决方法:用SqlCommandBuilder 实现批量更新
    1.功能:
    可以实现你对DataSet在UI层做任意操作后,直接丢给这个方法,这个方法就可以自动把你的修改更 新到数 据库中,而没必要每次都更新到数据库
    2.使用方法

     public int UpdateByDataSet(DataSet ds,string strTblName,string strConnection)
     {
      try
     {
      SqlConnection conn = new SqlConnection(strConnection));
      SqlDataAdapter myAdapter = new SqlDataAdapter();
      SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection)this.conn);  
      myAdapter.SelectCommand = myCommand;
      SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);  
      myAdapter.Update(ds,strTblName); 
      return 0;
    }
    catch(BusinessException errBU)
    { 
      throw errBU;
    } 
    catch(Exception err)
    { 
      throw new BusinessException(err);
    }
    }
    

    直接调用这个方法就可以啦,说明的一点是select * from "+strTblName是一定要的,作用大家也应该想到了,主要是告诉SqlDataAdapter更新哪个表。
    3.什么时候用?
        a. 有时候需要缓存的时候,比如说在一个商品选择界面,选择好商品,并且进行编辑/删除/更新后,
           最后一并交给数据库,而不是每一步操作都访问数据库,因为客户选择商品可能进行n次编辑/删除
           更新操作,如果每次都提交,不但容易引起数据库冲突,引发错误,而且当数据量很大时在用户执行
           效率上也变得有些慢
        b.有的界面是这样的有的界面是这样的,需求要求一定用缓存实现,确认之前的操作不提交到库,点击
          页面专门提交的按钮时才提交商品选择信息和商品的其它信息. 我经常遇到这样的情况
        c.有些情况下只往数据库里更新,不读取. 也就是说没有从数据库里读,SqlDataAdapter也就不知道是
          更新哪张表了,调用Update就很可能出错了。这样的情况下可以用SqlCommandBuilder 了.
    4.注意点:
       1).只能更新一个表,不能更新两个或两个以上相关联的表
       2).表中必须有主键
       3).更新的表中字段不能有image类型的
    5.优点:
        节省代码量,节省时间,这个方法可以代替所有的:  更新/删除/插入操作语句
    6.缺点:
        访问两次数据库(select * TableName,就是这句,要确认是哪个表,除非是很大的数据量, 一般是感觉不到的),效率有些慢。

    以上就是用SqlCommandBuilder 实现批量更新的方法,介绍了其优缺点,以及注意点,内容很详细,希望大家可以喜欢。

    您可能感兴趣的文章:
    • JBuilderX+SQL Server开发hibernate
    • jbuilder2006连接sqlserver2000的方法
    • asp.net Reporting Service在Web Application中的应用
    • mysqlreport显示Com_中change_db占用比例高的问题的解决方法
    • PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
    • PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
    • SQL Server 2008+ Reporting Services (SSRS)使用USER登录问题
    • SqlCommandBuilder类批量更新excel或者CSV数据的方法
    • SQL Report Builder 报表里面的常见问题分析
    上一篇:ASP.NET MVC 3仿Server.Transfer效果的实现方法
    下一篇:三种asp.net页面跳转的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SqlCommandBuilder如何实现批量更新 SqlCommandBuilder,如何,实现,