欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-06 10:53:01
//通过各种方式获取一个数据库连接字符串 string str = ConfigurationManager.ConnectionStrings["HidistroSqlServer"].ConnectionString; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("OrderItems",SqlDbType.Structu......

一、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