发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
在做大型网站或者系统的时候,经常会遇到个问题就是批量插入或者修改数据库。如果遇到这个问题,还是一条条记录来处理,这样的效率太低了,所以要考虑批量插入或者修改
今天这边不讲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,这样就能一次插入多条记录。
来自: 昵称10504424 > 《SqlServer》
0条评论
发表
请遵守用户 评论公约
C# listview 显示数据库值
C# listview 显示数据库值。OracleCommand cmd = conn.OracleDataReader dr = cmd.listView1.GridLines = true;FullRowSelect = true;Scrollable = true;// 针对数据库的字段名称,建立与之适应显示表...
c#ADO.NET 执行带参数及有返回数据
C#下SQL Server 2008表类型参数传递 - 51CTO.COM
C#下SQL Server 2008表类型参数传递 - 51CTO.COM.在学习SQL Server 2008的过程中,突然发现SQL Server支持自定义表类型,我们可以轻松的将一个SQL Server 2008表类型作为参数传递给存储过程。通过上面...
从零开始学ASP.NET(基础篇)
从零开始学ASP.NET(基础篇) 8天
C#调用SQL自定义函数返回值
为ASP.NET封装的SQL数据库访问类
/// <summary> /// 运行SQL语句 /// </summary> /// <param name="SQL"></param> public void RunProc(string SQL) {/// <summary> /// 运行SQL语句,返回Data...
c#.net上传文件到Oracle数据库 BOLB字段读取和写入
编写数据库操作类,使ASP.NET 中的数据库操作变得简单
/// <summary> /// 给定一个文章编号, 读取数据库中的一篇文章 /// </summary> /// <returns>Article</returns> public Article GetArticle(int articleId) { string ...
编写自己的高效分页SqlHelper
declare @num int set @num=1 while(@num<1000001) begin insert BigData values(@num) set @num = @num+1 end declare @num intset @num=1while(@num<1000001) begininsert Bi...
微信扫码,在手机上查看选中内容