方法一

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存储过程直接传表;用户定义表类型的表相关推荐

  1. boost::spirit模块实现演示自定义的、用户定义的类型如何作为标记值类型轻松地与词法分析器集成

    boost::spirit模块实现演示自定义的.用户定义的类型如何作为标记值类型轻松地与词法分析器集成 实现功能 C++实现代码 实现功能 boost::spirit模块实现演示自定义的.用户定义的类 ...

  2. 5.4广义表的定义5.5广义表的存储结构

    广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...

  3. 线性表的定义与操作-顺序表,链式表(C语言)

    顺序表: typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Posit ...

  4. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题 原文:SQL SERVER中用户定义标量函数(scalar user defined fu ...

  5. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO/****** Object: StoredProcedure [dbo].[Common_PageList] Script ...

  6. 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 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...

  7. sql自定义函数学习思路_学习SQL:用户定义的函数

    sql自定义函数学习思路 You can create several user-defined objects in a database. One of these is definitely u ...

  8. 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.时 ...

  9. 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表

    ​ 线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...

最新文章

  1. julia有 pytorch包吗_有了Julia语言,深度学习框架从此不需要计算图
  2. mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程
  3. mysql源码添加一个命令,MySQL ALTER命令
  4. 为什么“或命题真假的判断是有真则真?
  5. 基于特征的对抗迁移学习论文_lt;EYD与机器学习gt;迁移学习:PTL选择式对抗网络...
  6. 基于 DataLakeAnalytics 做跨地域的数据分析
  7. 爬虫-request库-get请求
  8. MAVEN Error: Using platform encoding (GBK actually) to copy filtered resources.....
  9. 视频内容付费系统整站源码
  10. 解决 psftp local: unable to open 的问题
  11. LayUI使用distpicker.js插件实现三级联动
  12. Android Studio属性动画,Android Studio 三种方式建立动画效果
  13. 计算机网络设计前三层实验,基于Packet Tracer的计算机网络实验设计
  14. ReactOS学习笔记--编译和调试
  15. 咸鱼CAD笔记—CAD快捷键
  16. html文件引用.vue 文件的方式
  17. Java金额转换工具类
  18. 关于数据仓库面试题的整理
  19. OpenCV_contrib配置教程(详细版)
  20. 哈夫曼树的构建及哈夫曼树编码

热门文章

  1. Openwrt常用软件模块之NTP
  2. WinEdt 操作索引
  3. 如何将STM32F103ZET6的工程改为STM32F103CBT6的工程
  4. 怎样发外链,使网站能快速收录,秒收录
  5. 从架构角度看网络安全:数字化时代企业如何构建防御体系?
  6. 目标检测YOLO实战应用案例100讲-小麦麦穗的目标检测与杂草分类识别研究
  7. 如何远离网络钓鱼欺诈攻击 - 来自真实世界的12个诈骗案例
  8. 经纬恒润以太网开发及测试方案,助力智能汽车落地
  9. 【ManageEngine】ServiceDesk Plus荣获2022安全样板工程数据安全奖
  10. 回首三年,拥报2009(四)-终结篇