数据库 
首页 > 数据库 > 浏览文章

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

(编辑:jimmy 日期: 2024/11/26 浏览:3 次 )
在做大型网站或者系统的时候,经常会遇到个问题就是批量插入或者修改数据库。如果遇到这个问题,还是一条条记录来处理,这样的效率太低了,所以要考虑批量插入或者修改

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

第一步,在数据库里点击 新建查询 创建相应的sql
复制代码 代码如下:
--======自定义表类型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,这样就能一次插入多条记录。
上一篇:多次执行mysql_fetch_array()的指针归位问题探讨
下一篇:一次非法关机导致mysql数据表损坏的实例解决
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap