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; Conversionhelper = new Conversion (); List Modellist = new List (); 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 //参数 );
上面代码用到的方法
////// return a dataset /// /// 一个有效的数据库连接字符串 /// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。) /// 存储过程的名字或者 T-SQL 语句 /// 以数组形式提供SqlCommand命令中用到的参数列表 ///return a dataset 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; } } ////// 为执行命令准备参数 /// /// SqlCommand 命令 /// 已经存在的数据库连接 /// 数据库事物处理 /// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。) /// Command text,T-SQL语句 例如 Select * from Products /// 返回带参数的命令 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



