【插件开发笔记】批量处理数据库
金蝶云社区-Meliodas
Meliodas
10人赞赏了该文章 771次浏览 未经作者许可,禁止转载编辑于2020年08月09日 00:16:57

在项目中,整理了一大批数据,需要更新到数据库时。
采用逐条数据更新的话,会非常慢:而且有可能会非常耗用系统性能。

可以使用批量插入、批量更新、批量删除物理表格数据的服务。


/ /定义一个DataTable:存储待更新的数据
DataTable dt = new DataTable();
dt.TableName = "JD_t_Cust_Entry100001";
var idCol = dt.Columns.Add("FID");
idCol.DataType = typeof(long);
var billNoCol = dt.Columns.Add("FBillNo");
billNoCol.DataType = typeof(string);
// 灌入测试数据
dt.BeginLoadData(); // 执行此方法,可以提升灌入数据性能
for (int i = 1; i <= 10; i++)
{
dt.LoadDataRow(new object[] { i, i.ToString() }, true);
}
dt.EndLoadData(); // 灌入数据结束
// 准备批量更新服务参数
// tableName : 待更新的物理表格名
// dt : 待更新的数据
BatchSqlParam batchUpdateParam = new BatchSqlParam("JD_t_Cust_Entry100001", dt);

// 设置匹配字段:即DataTable中的数据,与物理表格以那个字段进行匹配
// 匹配字段可以添加多个
// columnName: DataTable中的列名
// fieldName : 物料表格中匹配的字段名
batchUpdateParam.AddWhereExpression("FID", KDDbType.Int64, "FID");
// 设置待更新的字段
// columnName: DataTable中的列名
// fieldName : 对应的物料表格字段名
batchUpdateParam.AddSetExpression("FBillNo", KDDbType.String, "FBillNo");
// 执行批量更新
Kingdee.BOS.App.Data.DBUtils.BatchUpdate(this.Context, batchUpdateParam);

学习自丁老师的原贴:https://vip.kingdee.com/article/18840

本文转载自:金蝶社区

作者:JohnnyDing

原文链接:https://vip.kingdee.com/article/18840

图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0