存儲過程批量處理數據的兩種方法

一:使用Bulk到數據庫輔助表

1.在數據庫建立一張輔助表(字段爲需要插入的字段)

2.項目代碼處理,並調用存儲過程

//項目代碼

  //創建表

 DataTable dt = new DataTable();
 dt.Columns.AddRange(new DataColumn[] {
 new DataColumn("字段1",typeof(string)),
 new DataColumn("字段2",typeof(string)),
 new DataColumn("字段3",typeof(string)),

  });

 //將數據添加到數據庫輔助表

 foreach (var model in 所有數據的集合{
  DataRow row = dt.NewRow();
  row["字段1"] = model.字段1;
  row["字段2"] = model.字段2;
  row["字段3"] = model.字段3;
 dt.Rows.Add(row);
 }

dt.AcceptChanges();

 //批量將值添加到數據庫輔助表表中
  SQLHelper.BulkToDB(dt, "輔助表表名);

//調用存儲過程
SqlParameter[] parameters = {
  new SqlParameter("",),
  new SqlParameter("",};
 int a;
 SQLHelper.RunProcedure("存儲過程名", parameters, out a);

二:使用數據庫的用戶定義表類型

1.創建要傳的字段放入表類型中

CREATE TYPE 表類型名TABLE(
字段名1  字段類型    NULL
字段名2   字段類型    NULL

字段名3  字段類型    NULL
)
GO

2.項目代碼處理,並調用存儲過程

//項目代碼

 //創建設備類型參數值內存表
  DataTable MainData = new DataTable();

  MainData.Columns.Add("字段名1", typeof(string));
  MainData.Columns.Add("字段名2", typeof(string));
  MainData.Columns.Add("字段名3", typeof(string));

 //將數據添加到數據庫表類型中

 DataRow MainRow = null;
     for (var i = 0; i < item.list.Count; i++)  {
MainRow = MainParamData.NewRow();
  MainRow ["字段名1"] = item.list[i].字段名1;
  MainRow ["字段名2"] = item.list[i].字段名2;
  MainRow ["字段名3"] = item.list[i].字段名3;
  MainRow .Rows.Add(MainRow );
  }

 //調用存儲過程

  SqlParameter[] parameters = {
 new SqlParameter("@tbtemp",MainData ),//@tbtemp要與存存儲過程聲明表類型的名字一致
 parameters[2].Direction = ParameterDirection.Output;
  SQLHelper.RunProcedure("存儲過程名", parameters, "ds");

//存儲過程申明表類型名稱

CREATE PROCEDURE 存儲過程名
@tbtemp 用戶定義表類型名 READONLY,
AS








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章