加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mssql2008 自定义表类型实现(批量插入或者修改)

发布时间:2022-11-26 14:02:24 所属栏目:MsSql教程 来源:转载
导读: 在做大型网站或者系统的时候,经常会遇到个问题就是批量插入或者修改数据库。如果遇到这个问题,还是一条条记录来处理,这样的效率太低了,所以要考虑批量插入或者修改
今天这边不讲SqlBul

在做大型网站或者系统的时候,经常会遇到个问题就是批量插入或者修改数据库。如果遇到这个问题,还是一条条记录来处理,这样的效率太低了,所以要考虑批量插入或者修改

今天这边不讲SqlBulkCopy,只简单讲sql自定义表类型。因为目前的项目我用到了分表的方式,用存储过程比较方便自动创建分表。现在把我目前写的功能简单做个记录mssql 在表中插入,也方便以后自己查阅

第一步,在数据库里点击 新建查询 创建相应的sql

复制代码 代码如下:

mssql2008 自定义表类型实现(批量插入或者修改)  自定义表类型 批量插入 第1张

--======自定义表类型Demo======

--创建表

create table tab

(

tabvalue varchar(10)

)

go

--创建自定义表类型

create type Type_tab as table

(

Type_tabvalue varchar(10)

)

go

--创建 存储过程

create procedure p_Tab

(

@ptab Type_tab readonly

)

as

begin

insert into tab select * from @ptab

end

--sql 测试表类型 type1

declare @tt Type_tab

insert into @tt values('a')

insert into @tt values('b')

insert into @tt values('c')

insert into tab select * from @tt

select * from tab

--sql 测试表类型 type2

declare @tt2 Type_tab

insert into @tt2 values('a')

insert into @tt2 values('b')

insert into @tt2 values('c')

execute p_Tab @tt2

第二步 asp.net 调用 存储过程

复制代码 代码如下:

using (SqlConnection conn =SqlHelper.Settings.GetSqlConnection(true))

{

try

{

DataTable DtAdd = new DataTable();

DtAdd.Columns.Add("tabvalue");

DtAdd.Columns["tabvalue"].DataType = System.Type.GetType("System.String");

foreach (ModelEnt rl in List)

{

DataRow Dr = DtAdd.NewRow();

Dr["tabvalue"] = rl.tabvalue;

DtAdd.Rows.Add(Dr);

}

//int Rt = SqlHelper.SqlHelper.SqlBulkCopy(DtAdd, TableName, conn);

SqlCommand cmd = new SqlCommand("p_Tab", conn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@ptab", SqlDbType.Structured).Value =DtAdd;

if (conn.State == ConnectionState.Closed)

{

conn.Open();

}

return cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

#if DEBUG

throw ex;

#else

return -10000;

#endif

}

finally

{

conn.Close();

}

ModelEnt 是tab表对应的实体类。list 是ModelEnt 的一个集合,这样可以实现多个row,这样就能一次插入多条记录。

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!