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

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

今天这边不讲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,这样就能一次插入多条记录。

(0)

相关推荐

  • SQL2008 详解直接将XML存入到SQL中

    一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接把 xml 内容存储在该字段中,并且 SQL Server 会把它当作 xml 来对待,而不是当作 varchar 来对待. 随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合SQL Server中XML字段的使用.本文主要说明如何使用SQL语句对XML进行操作. 二.定义XML字段 在进行数据库的设计中,我们可以在表设计器中,很方便的将一个字段定

  • 卸载SQL2008遇到问题(重启计算机失败、找不到SQL卸载程序)的解决办法

    重启计算机失败.找不到SQL卸载程序问题的解决方法,具体内容如下 问题1:很奇怪,控制面板找不到SQL的卸载程序,后来在网上查知需要修复windows卸载/安装程序,官网下载网址: http://download.microsoft.com/download/7/E/9/7E9188C0-2511-4B01-8B4E-0A641EC2F600/MicrosoftProgram_Install_and_Uninstall.meta.diagcab1.1 下载双击打开后,直接选next 1.2 根据

  • SQL2008 附加数据库提示5120错误解决方法

    前几天在附加数据库时,出现了这个错误 在win7 x64系统上使用sql2008进行附加数据库(包括在x86系统正在使用的数据库文件,直接拷贝附加在X64系统中)时,提示无法打开文件,5120错误. 这个错误是因为没有操作权限,所以附加的时候出错,只要设置这个文件或文件夹安全属性即可.解决办法:    1.打开该数据库文件存放的目录或数据库文件的属性窗口,选择"属性"菜单->选择"安全"标签->选择"编辑"按钮.    2.在选择组或

  • sql2008安装教程 SQL Server 2008 R2 安装图解

    一.进入安装程序 插入SQL Server 2008 R2安装光盘,自动运行后出现"SQL Server安装中心". 在这里我们在本机安装一个SQL Server默认实例,所以执行以下步骤: 1.在左侧的目录树中选择"安装". 2.在右侧的选择项中,选择第1项目"全新安装或向现有安装添加功能",然后就进入了安装程序. 二.安装的准备过程 1.安装程序支持规则 在这个准备过程里,首先安装程序要扫描本机的一些信息,用来确定在安装过程中不会出现异常.如

  • sql2008评估期已过的解决办法及序列号

    操作如下:(1)将SQL安装光盘(或者ISO)放进去运行,进入安装界面. (也可进入开始>程序>Microsoft SQL Server 2008>配置工具>SQL Server 安装中心)(2)选择"维护"中的"版本升级",(3)按照版本升级的向导,先输入产品密钥,也就是正式企业版的序列号:(4)然后选择要升级的数据库实例,当然这里虚拟机中只有一个实例所以也不用选择了,一直进行向导的"下一步",最后点击"升级&

  • 使用Sqlserver事务发布实现数据同步(sql2008)

    事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布订阅的方式简要介绍一下操作流程,一方面做个总结备份,一方面与大家进行一下分享和交流.费话就不多说了,进入一下今天的正题:) 这里要说明一下环境:首先我在本地局域网内有两台安装有sqlserver2008的机器(注意:已发布的快照版本无法向老版本数据库兼容,意味着2008下创建的事务或快照发布,无法被

  • sql2008 hql语句翻译过来的分页语句介绍

    sql2008 hql语句翻译过来的分页语句 WITH query AS (select syusers0.id as id5, syusers0.createdatetime as createda25_, syusers0.modifydatetime as modifyda35_, syusers0.name as name5, syusers0.password as password5, ROW_NUMBER() OVER ( order by syusers0.name desc)

  • SQL2008 附加数据库提示 5120错误 解决办法

    在win7 x64系统上使用sql2008进行附加数据库(包括在x86系统正在使用的数据库文件,直接拷贝附加在X64系统中)时,提示无法打开文件,5120错误. 是因为没有操作权限,所以附加的时候出错,只要设置这个文件或文件夹安全属性即可. 解决办法: 1.打开该数据库文件存放的目录或数据库文件的属性窗口,选择"属性"菜单->选择"安全"标签->选择"编辑"按钮. 2.在选择组或用户名列表中,选择Authenticated Users

  • sql2008安装后服务器改名造成名称不一致解决方法

    用select @@servername和select serverproperty('servername')一查看服务器名是否一致 如果不一致,则以serverproperty('servername')为准 解决办法: 复制代码 代码如下: exec sp_dropserver @server = '服务器名' exec sp_addserver @server = '服务器名', @local = 'LOCAL' 重启sql2008数据库服务,后再次检查是否一致

  • SQL2005、SQL2008允许远程连接的配置说明(附配置图)

    SQL Server 2005允许远程连接的配置说明 在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息.在使用任何程序连接到 SQL Server 时都可能会发生此问题.例如,在使用 SQLCMD 实用工具连接到 SQL Server 时收到以下错误消息: Sqlcmd:错误:Microsoft SQL Native Client:建立到服务器的连接时发生错误.连接到 SQL Server 2005 时,默认设置 SQL Server 不

  • SQLServer日志清空语句(sql2000,sql2005,sql2008)

    SQL Server日志清空方法 在查询分析器中顺序执行以下三步,其中 databasename 为你的数据库文件名 sql2000日志清空 可以将jb51.ldf文件变得很小,方便备份数据库等,在sqlserver查询分析器中执行即可. 复制代码 代码如下: DUMP TRANSACTION [jb51] WITH NO_LOGBACKUP LOG [jb51] WITH NO_LOGDBCC SHRINKDATABASE([jb51]) 1.清空日志: DUMP TRANSACTION [d

随机推荐