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

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

数据库端
同上,但是string类型的数据头尾会加上双引号 ,可以替换掉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值