数据库批量更新(TVP)

本文介绍了如何利用SQL Server的Table Valued Parameter (TVP) 功能进行批量更新,以提高效率。首先创建一种新的数据库类型,然后定义一个存储过程用于更新操作,并在程序中调用此存储过程,通过示例展示了批量更新的过程。

SQL2005之后数据库支持一种新的特性TVP(Table Valued Parameter) 可以用于批量更新或者是批量返回数据。

批量更新通过一次打开数据库链接完成大量数据的更新,节省开关数据库链接的时间,数据量少的时候效果并不明显,但是大批量数据的时候可以明显的提升效率批量更新

Step1:创建一种新的数据库类型

              使用VS中Database Project

              Create type [dbo].[TVPExample] as TABLE

              (

                     [ID]      bigint,

                     [Name] nvarchar(100)

             )

Step2:创建一个存储过程

             Create Procedure [dbo].[Proc_UpdateExample]

                     @tvpExample    TVPExample readonly

             as

                     begin tran UpdateExample

                     update Example set Name=tvpExample.Name where ID = tvpExample.ID

                     if @@Error <> 0

                     begin

                           rollback tran UpdateExample

                           return -1;

                     end

                     commit tran UpdateExample

             return 1;

 

Step3:在程序中调用该存储过程

             var dt =new DataTable();

             dt.columns.add(new datacolumn("ID" Type.GetType("System.Int64")));

             dt.columns.add(new datacolumn("ID" Type.GetType("System.String")));

             

             foreach(var exampleRow in dtUpdate.rows)

             {

                      var row = dt.NewRow();

                      row.id = exampleRow.ID;

                      row.Name = exampleRow.Name;

             }

             

             var conn = GetDBConnection();

             try

             {

                   conn.open();

                   var sqlCmd = new SqlCommnad{Connection =conn,CommandType = CommandType.StoredProcedure,CommandText = "dbo.Proc_UpdateExample"}

                   sqlCmd.parameters.add("@tvpExample",dt);

                   sqlCmd.ExecuteNonQuery();

             }

             catch(exception ex)

             {

             }

             批量返回数据,主要是返回更新记录的信息,例如更新记录的ID或者是某些列的信息

Step1:创建一个新的数据库类型用来返回数据

Step2:创建一个存储过程

             

Step3:调用该存储过程来返回数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值