当前位置: 移动技术网 > IT编程>开发语言>.net > C#传DataTable到SQL server到存储过程

C#传DataTable到SQL server到存储过程

2020年07月14日  | 移动技术网IT编程  | 我要评论

一、SqlClient类库

C#端

            //通过各种方式获取一个数据库连接字符串
            string str = ConfigurationManager.ConnectionStrings["HidistroSqlServer"].ConnectionString;

            SqlParameter[] paras = new SqlParameter[] {
                new SqlParameter("OrderItems",SqlDbType.Structured)
            };
            paras[0].Value = dt;
            using (SqlConnection sqlconn = new SqlConnection(str))
            {

                sqlconn.Open();
                SqlCommand sqlcommand = sqlconn.CreateCommand();
                sqlcommand.CommandType = CommandType.StoredProcedure;
                sqlcommand.CommandText = "cp_InsertOrderItems";
                sqlcommand.Parameters.AddRange(paras);
                sqlcommand.ExecuteNonQuery();
                sqlconn.Close();
            }

数据库端
在代码执行前需要到数据库创建一个自定义数据类型OrderItems到存储过程,直接声明输入参数:

@OrderItems OrdersItemsTableType readonly

然后内容是:

Insert into table (xx,xx) Select xx,xx from @OrderItems 

可以自己再补充一点返回影响行等。

二、Microsoft.Practices.EnterpriseLibrary

C#端

            System.Data.Common.DbCommand sqlStringCommand = this.database.GetStoredProcCommand("cp_InsertOrderItems");
            SqlParameter[] paras = new SqlParameter[] {
                new SqlParameter("flag",SqlDbType.Int),
                new SqlParameter("OrderItems",SqlDbType.Structured)
            };
            paras[0].Direction = ParameterDirection.ReturnValue;
            paras[1].Value = dt;
            sqlStringCommand.Parameters.AddRange(paras);
            this.database.ExecuteNonQuery(sqlStringCommand);
            return Convert.ToInt32(sqlStringCommand.Parameters[0].Value);

数据库端
同上

本文地址:https://blog.csdn.net/Acsxionian/article/details/107324540

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网