批量保存数据 List<T> 的使用
来源:互联网 发布:淘宝司法拍卖是什么 编辑:程序博客网 时间:2024/04/29 01:08
在机房收费这个系统中是没有涉及到数据批量操作这样的功能的,假如用户某天提出了批量添加或修改学生(卡)信息这样的需求,我们应该怎样实现呢?这是个很现实的问题,因为学生的信息在一入学的时候就会保存到一个相应的系统里,如教务系统。但是卡的信息可能是后来才添加的。所以很可能提这样的需求,从教务系统获取一份学生信息的名单,然后对这些学生进行批量建卡操作。
假设批量添加是通过DataGrid实现的,我们需要把DataGrid里面的每一条数据插入到数据库中。
方法一:
//循环表格的所有行,逐行插入 for (int i = 0; i < DataGrid.Rows.Count; i++) { DataRowView rows = DataGrid[i] as DataRowView; //取出表格的一行数据 CardinfoEntity enCardinfo = new CardinfoEntity(); //声明实体 //给实体赋值 enCardinfo.Cid = rows["Cid "].toString(); enCardinfo.Cardtype = rows["Cardtype "].toString(); enCardinfo.Cstatus = rows["Cstatus "].toString(); enCardinfo.Redate = rows["Redate "].toString(); new CardBLL().Insert(enCardinfo); //传入一个实体,插入信息 }
这样操作实现了批量添加的功能,但是仔细看看,假如我们插入了10条信息,这样程序在执行的时候一共走了10次(U<->B<->D)插入信息这条线,当然次数少我们看不出有什么影响,但是当同时插入上千条信息的时候呢?难道让程序再走上千次插入信息这个流程?这样程序的运行效率一下变负值了。并且如果程序采用一些服务如WCF的话,那就同时需要调用上千次WCF服务!假如在插入800条数据的时候程序崩溃了,剩下没插入的数据怎么处理?很显然也不能保证数据的完整性。
在数据量大的时候,这样做肯定是不可取的,怎么去改进呢?既然循环单条插入影响效率,那我们就应该想办法对这一条条的数据进行“打包”,然后再集中处理。
如何打包?这就用到了我们熟悉的List<>泛型集合。
方法二:
//声明一个CardinfoEntity类型的泛型集合 List<CardinfoEntity> enCardinfoList = new List<CardinfoEntity>(); for (int i = 0; i < DataGrid.Rows.Count; i++) { DataRowView rows = DataGrid[i] as DataRowView; //取出表格的一行数据 CardinfoEntity enCardinfo = new CardinfoEntity(); //声明实体 //给实体赋值 enCardinfo.Cid = rows["Cid "].toString(); enCardinfo.Cardtype = rows["Cardtype "].toString(); enCardinfo.Cstatus = rows["Cstatus "].toString(); enCardinfo.Redate = rows["Redate "].toString(); enCardinfoList.Add(enCardinfo); //将实体添加到集合中 } new CardBLL().Insert(enCardinfoList); //将整个集合传入数据层,循环List<>进行添加
声明一个List<>把要插入的信息全部添加到该集合中,然后统一传到数据访问层,进行添加操作。这样做程序只走了一遍流程,仅调用了一次WCF服务,提高了运行效率,再加上事务处理,也就很好的保证了数据的完整性。
现在写代码,不再是写出来就行,能实现功能就行。更需要考虑的是怎么让代码更有价值,让程序运行更有效率。
oノo════════════════════════════╲
│ヽ.学无止境, 分享至上。 │
│ 出自: http://blog.csdn.net/u010028869 .ヽ│
╲═════════════════════════════ヾ
- 批量保存数据 List<T> 的使用
- 使用EntityManager批量保存数据
- List<T>的使用
- List<T>的使用
- List<T>的使用
- List<T>的使用
- 批量保存,批量插入数据
- 使用List保存搜索结果,数据重复
- android 使用SharedPreferences保存list数据
- hibernate 批量保存数据
- 批量保存数据
- C# List<T> Add方法循环添加时只保存了最后一次的数据(覆盖问题)
- list<T>删除不满足条件的数据
- Oracle使用Mybatis实现List批量插入数据
- Oracle使用Mybatis实现List批量插入数据
- Oracle使用Mybatis实现List批量插入数据
- Oracle使用Mybatis实现List批量插入数据
- Oracle使用Mybatis实现List批量插入数据(转载)
- 如何写出高性能的Jquery代码
- iOS中蓝牙的实现方案
- MFC中图形的临时保存和重绘
- 第十章 10.5.1节练习
- Javascript高质量编码 (1)
- 批量保存数据 List<T> 的使用
- Framebuffer编程 应用程序
- 二分法获取值的index
- 黑马程序员_基本类型与包装类
- 智能开关项目进展
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 今天是我二十一岁的生日
- 英文官方sqlmap用户手册
- WinFrom 中 label背景透明