栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

c#.net SQL存储过程直接传表;用户定义表类型的表

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 helper = 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号