Sql自定义表类型批量导入数据
-- 创建自定义表类型
CREATE TYPE [dbo].[App_ProductTable] AS TABLE(
[p_name] [varchar](50) NOT NULL,
[p_audio] [varchar](255) NOT NULL,
[p_video] [varchar](255) NOT NULL
)
GO
--在存储过程中使用自定义表类型
ALTER PROCEDURE [dbo].[sp_import_app_product](
@pDT dbo.App_ProductTable READONLY,
@result INT OUTPUT
)
AS
BEGIN
BEGIN TRAN
UPDATE a SET
a.p_audio=b.p_audio,
a.p_video=b.p_video
FROM App_Product AS a
JOIN @pDT AS b
ON a.p_name=b.p_name
IF @@ERROR<>0
BEGIN
ROLLBACK TRAN
SET @result=-1
END
ELSE
BEGIN
COMMIT TRAN
SET @result=1
END
END
--C#中代码
/// <summary>
/// 批量更新产品信息,批量导入,最好使用 DataTable 数据源
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static int BatchUpdateProductImport(DataTable dt)
{
SqlParameter[] param ={
new SqlParameter("@pDT",SqlDbType.Structured),//需要指定此类型
new SqlParameter("@result",SqlDbType.Int)
};
param[0].Value = dt;
param[0].TypeName = "dbo.App_ProductTable";
param[1].Direction = ParameterDirection.Output;
adsql.SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString, CommandType.StoredProcedure, "sp_import_app_product", param);
return Convert.ToInt32(param[1].Value);
}
-- 直接使用自定义表类型
DECLARE @c App_ProductTable
INSERT INTO @c(p_audio,p_video,p_name) VALUES('/audio/1.mp3','/video/2.mp4','Xizhang')
SELECT * FROM @c
注:在服务端会有一个定义临时变量的过程,然后把所有的数据插入到这个变量中去,然后再执行存储过程的逻辑。
1. 客户端是否一定用DataTable类型
推荐使用DataTable类型,但也可以使用其他的类型,例如DataReader的数据流。
2. DataTable的 字段名称 是否要匹配
不一定要匹配,只要顺序一致,类型一样就可以了。
Sql自定义表类型批量导入数据的更多相关文章
- mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
1. 1)MySQL 连接本地数据库,从cmd中进入mysql命令编辑器: root root分别为用户名和密码 mysql -uroot -proot 2)MySQL 连接本地数据库,用户名为“ro ...
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...
- 批量导入数据表(oracle)
批量导入数据表(oracle) 1.登陆plsql 2.找到菜单栏 工具>>导入数据>>新增图标(会提示选择*.csv文件) 选择如上图所示 3.选择数据并导入 4.下图为执行 ...
- C# SqlBulkCopy类批量导入数据
特别注意 sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); 插入的时候列的顺序可 ...
- 批量导入数据到mssql数据库的
概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...
- java使用POI实现Excel批量导入数据
1.准备工作 1.1 创建模板表头与数据库表字段一一对应,示例如下 1.2将模板放入项目中,如下图所示: 2.前端页面 2.1 使用超链接提供模板下载地址 <html lang="zh ...
- csv文件批量导入数据到sqlite。
csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {}) # bs_switch 为from表单file字段的namedata =[i.split( ...
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- 随笔编号-09 批量导入数据(Mysql)报MySQL server has gone away 问题的解决方法
问题场景: 使用*.sql 脚本,批量导入数据到mysql实例中,使用DOS 界面导入的,期间,到最后一步 source D:\aaa.sql 回车后,系统提示 MySQL server has g ...
随机推荐
- HTML5 Canvas ( 矩形的绘制 ) rect, strokeRect, fillRect
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java 权限框架 Shiro 实战二:与spring集成、filter机制
转自:https://www.cnblogs.com/digdeep/archive/2015/07/04/4620471.html Shiro和Spring的集成,涉及到很多相关的配置,涉及到shi ...
- eclipse中添加aptana插件(html.css.js自动提示)
一.关于aptana aptana是一款很不错的插件,本人主要用于安装此类插件,在eclipse中用于编辑javascript代码,html代码,和css代码的,因为其有自动纠错功能,当然安装后的问题 ...
- win10/win7 笔记本 开启虚拟无线 批处理
Microsoft Virtual WiFi Miniport Adapter 一.看网络网卡 有多出的这一项“Microsoft Virtual WiFi Miniport Adapter”,那么说 ...
- J2SE 8的输入输出--读取/写入文本文件和读取/写入二进制数据
读取/写入文本文件 // 1. 文本输入 // (1) 短小文本直接转入字符串 String string = new String(Files.readAllBytes(Paths.get(&quo ...
- WDA-FPM-2-APPLICATION-TABSTRIP(OIF)
转载:https://www.cnblogs.com/sapSB/p/10081344.html FPM二:简单的APPLICATION-TABSTRIP(OIF) 1.新建WDA程序ZLYFPM ...
- C# 获取文件名、目录、后缀、无后缀文件名、扩展名、根目录等
[csharp] view plain copy class Program { static void Main(string[] args) { //获取当前运行程序的目录 string file ...
- Django模型的filed type总结
1)AutoField:如果没有指明主键,就会产生一个自增的主键 2)BigIntegerField:64位的整形数值,从 -2^63 (-9223372036854775808) 到 2^63-1( ...
- H5特性回顾
canvas 绘画, video 媒介回放 audio元素 对本地离线存储的更好支持, 新的特殊内容 - 元素 比如 article,footer,header,nav,section, 新的表单控件 ...
- maven 的聚合