| 您的当前位置:首页 --> MYSQL教程 --> mssql2008 自定义表类型实现(批量插入或者修改) |
| MYSQL教程 mssql2008 自定义表类型实现(批量插入或者修改) |
| 浏览次数:1280 关键词 ( ) |
| 查看使用该CPU的产品 查看CPU天梯 |
| CPU型号:mssql2008 自定义表类型实现(批量插入或者修改) |
| 主频:Ghz |
| 睿频:Ghz |
| 核心数:个 |
| 不支持超核心 |
| 制作工艺: |
| 插槽类型: |
| 功耗:0W |
| L3缓存:0MB |
| 支持最大内存: 0GB |
| CPU详细参数 |
|
在做大型网站或者系统的时候,经常会遇到个问题就是批量插入或者修改数据库。如果遇到这个问题,还是一条条记录来处理,这样的效率太低了,所以要考虑批量插入或者修改 今天这边不讲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,这样就能一次插入多条记录。 |
| 下一个产品 SQL计算timestamp的差值的方法 上一个产品 修改mysql5.5默认编码(图文步骤修改为utf-8编码) |