c#.net SQL存储过程直接传表;用户定义表类型的表
方法一
DataSet dataset = new DataSet();
using (SqlConnection conn = new SqlConnection(SqlHelper.sqlconnectionString2))
{conn.Open();using (SqlCommand cmd = new SqlCommand("[dbo].[Proc_Save_OrdersPayWxNotify]")){cmd.CommandType = CommandType.StoredProcedure;cmd.Connection = conn;cmd.Parameters.AddWithValue("@P0", dt);cmd.Parameters.AddWithValue("@P1", UserType);using (SqlDataAdapter adp = new SqlDataAdapter(cmd)){adp.Fill(dataset);var ds = dataset;}}
}
如果上面代码看不懂,可以结合下面文章看
SQL存储过程直接传表_橙cplvfx-技术踩坑记-CSDN博客SQL存储过程直接传表https://cplvfx.blog.csdn.net/article/details/122566338
方法二
int UserType=1;
Conversion<DBUserInfoModel> helper = new Conversion<DBUserInfoModel>();
List<DBUserInfoModel> Modellist = new List<DBUserInfoModel>();
Modellist.Add(model);//model 你的数据模型实体变量参数
DataTable dt = helper.FillDataTable(Modellist);//将实体转换成DataTabl类型SqlParameter[] parm = new SqlParameter[1];
parm[0] = new SqlParameter("@userType ", dt); var re = ExecuteDataSet(connectionString: SqlHelper.sqlconnectionString2,//数据库连接字符串cmdType: CommandType.StoredProcedure,//表示是存储过程cmdText: "InsertUserInfo ",//存储过程名称commandParameters: parm //参数);
上面代码用到的方法
/// <summary>/// return a dataset/// </summary>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>return a dataset</returns>public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlConnection conn = new SqlConnection(connectionString);SqlCommand cmd = new SqlCommand();try{PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataAdapter da = new SqlDataAdapter();DataSet ds = new DataSet();da.SelectCommand = cmd;da.Fill(ds);conn.Close(); //记得要加上 关闭数据库连接,不然就容易出现超过最大连接池return ds;}catch{conn.Close();throw;}}/// <summary>/// 为执行命令准备参数/// </summary>/// <param name="cmd">SqlCommand 命令</param>/// <param name="conn">已经存在的数据库连接</param>/// <param name="trans">数据库事物处理</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>/// <param name="cmdParms">返回带参数的命令</param>private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms){//判断数据库连接状态if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandTimeout = 1800;cmd.CommandText = cmdText;//判断是否需要事物处理if (trans != null)cmd.Transaction = trans;cmd.CommandType = cmdType;if (cmdParms != null){foreach (SqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}}
该文章底部有《将实体转换成DataTabl类型》的代码
C# .NET 从dapper调用存储过程,该存储过程接受用户定义表类型的列表【实战】_橙cplvfx-技术踩坑记-CSDN博客从dapper调用存储过程,该存储过程接受用户定义表类型的列表;dapper给存储过程传 用户自定义表类型table;dapper给存储过程传 tablehttps://blog.csdn.net/cplvfx/article/details/122565805
c#.net SQL存储过程直接传表;用户定义表类型的表相关推荐
- boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成
boost::spirit模块实现演示自定义的.用户定义的类型如何作为标记值类型轻松地与词法分析器集成 实现功能 C++实现代码 实现功能 boost::spirit模块实现演示自定义的.用户定义的类 ...
- 5.4广义表的定义5.5广义表的存储结构
广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...
- 线性表的定义与操作-顺序表,链式表(C语言)
顺序表: typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Posit ...
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题 原文:SQL SERVER中用户定义标量函数(scalar user defined fu ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO/****** Object: StoredProcedure [dbo].[Common_PageList] Script ...
- Oracle PL/SQL存储过程对象类型Object type详解 create type obj_type as object, create table tab_name of obj_type
原 oracle 对象类型 object type 置顶 2011年06月13日 18:00:00 oypj2010 阅读数:3453 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...
- sql自定义函数学习思路_学习SQL:用户定义的函数
sql自定义函数学习思路 You can create several user-defined objects in a database. One of these is definitely u ...
- 1.19.5.3.时态表、关联一张版本表、关联一张普通表、时态表、声明版本表、声明版本视图、声明普通表、时态表函数等
1.19.5.3.时态表(Temporal Tables) 1.19.5.3.1.设计初衷 1.19.5.3.1.1.关联一张版本表 1.19.5.3.1.2.关联一张普通表 1.19.5.3.2.时 ...
- 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表
线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...
最新文章
- julia有 pytorch包吗_有了Julia语言,深度学习框架从此不需要计算图
- mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程
- mysql源码添加一个命令,MySQL ALTER命令
- 为什么“或命题真假的判断是有真则真?
- 基于特征的对抗迁移学习论文_lt;EYD与机器学习gt;迁移学习:PTL选择式对抗网络...
- 基于 DataLakeAnalytics 做跨地域的数据分析
- 爬虫-request库-get请求
- MAVEN Error: Using platform encoding (GBK actually) to copy filtered resources.....
- 视频内容付费系统整站源码
- 解决 psftp local: unable to open 的问题
- LayUI使用distpicker.js插件实现三级联动
- Android Studio属性动画,Android Studio 三种方式建立动画效果
- 计算机网络设计前三层实验,基于Packet Tracer的计算机网络实验设计
- ReactOS学习笔记--编译和调试
- 咸鱼CAD笔记—CAD快捷键
- html文件引用.vue 文件的方式
- Java金额转换工具类
- 关于数据仓库面试题的整理
- OpenCV_contrib配置教程(详细版)
- 哈夫曼树的构建及哈夫曼树编码