批量处理数据库原创
金蝶云社区-reputation
reputation
3人赞赏了该文章 863次浏览 未经作者许可,禁止转载编辑于2020年08月09日 18:27:03

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

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


/ /定义一个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);


赞 3