c#向一个订单里面插入多个商品

向一个订单里面插入多个商品

主要就是实现在购物车里面下单 ,一个订单可以对应多个商品,生成一个订单号

实现流程

  • 要创建两个数据库 一个数据库是存储订单号还有总金额等等的数据 附表就是存储选择下单的商品 就相当于存储同一个订单下面的几个商品
    这个就是主表商品附表
    上面这个就是数据库的设计

*在就是使用ado.net去像数据库里面插入数据

代码片.
public bool PreAdd(Model.Orders model, List<Model.Order_Items> items)
{
using (MySqlConnection connection = new MySqlConnection(PubConstant.MySqlConnectionString))
{
MySqlTransaction transaction = null;
try
{
connection.Open();
transaction = connection.BeginTransaction();

                StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into Orders(");
                strSql.Append(
                    "Code,CustId,CreateDateTime,TotalAmount,TotalNum,State,ReceiveBy,ReceivePhone,ReceiveAddress,SendDateTime)");
                strSql.Append(" values (");
                strSql.Append(
                    "@Code,@CustId,@CreateDateTime,@TotalAmount,@TotalNum,@State,@ReceiveBy,@ReceivePhone,@ReceiveAddress,@SendDateTime)");
                MySqlParameter[] parameters =
                {
                    new MySqlParameter("@Code", MySqlDbType.VarChar, 255),
                    new MySqlParameter("@CustId", MySqlDbType.Int32),
                    new MySqlParameter("@CreateDateTime", MySqlDbType.DateTime),
                    new MySqlParameter("@TotalAmount", MySqlDbType.Float),
                    new MySqlParameter("@TotalNum", MySqlDbType.Int32),
                    new MySqlParameter("@State", MySqlDbType.Int32),
                    new MySqlParameter("@ReceiveBy", MySqlDbType.VarChar, 500),
                    new MySqlParameter("@ReceivePhone", MySqlDbType.VarChar, 500),
                    new MySqlParameter("@ReceiveAddress", MySqlDbType.VarChar, 500),
                    new MySqlParameter("@SendDateTime", MySqlDbType.DateTime)
                };
                parameters[0].Value = model.Code;
                parameters[1].Value = model.CustId;
                parameters[2].Value = model.CreateDateTime;
                parameters[3].Value = model.TotalAmount;
                parameters[4].Value = model.TotalNum;
                parameters[5].Value = model.State;
                parameters[6].Value = model.ReceiveBy;
                parameters[7].Value = model.ReceivePhone;
                parameters[8].Value = model.ReceiveAddress;
                parameters[9].Value = model.SendDateTime;

                MySqlCommand command = new MySqlCommand(strSql.ToString(), connection, transaction);
                command.Parameters.AddRange(parameters);
                command.ExecuteNonQuery();

                //插入行项目
                strSql = new StringBuilder();
                strSql.Append("insert into Order_Items(");
                strSql.Append("OrderCode,Pid,Size,Prize,Num,Remark)");
                strSql.Append(" values (");
                strSql.Append("@OrderCode,@Pid,@Size,@Prize,@Num,@Remark)");

                foreach (var item in items)
                {
                    parameters = new MySqlParameter[]
                    {
                        new MySqlParameter("@OrderCode", MySqlDbType.VarChar, 255),
                        new MySqlParameter("@Pid", MySqlDbType.VarChar, 500),
                        new MySqlParameter("@Size", MySqlDbType.VarChar, 500),
                        new MySqlParameter("@Prize", MySqlDbType.Float),
                        new MySqlParameter("@Num", MySqlDbType.Int32),
                        new MySqlParameter("@Remark", MySqlDbType.Text)
                    };

                    parameters[0].Value = item.OrderCode;
                    parameters[1].Value = item.Pid;
                    parameters[2].Value = item.Size;
                    parameters[3].Value = item.Prize;
                    parameters[4].Value = item.Num;
                    parameters[5].Value = item.Remark;

                    command = new MySqlCommand(strSql.ToString(), connection, transaction);
                    command.Parameters.AddRange(parameters);
                    command.ExecuteNonQuery();

                }
                transaction.Commit();
                return true;
            }
            catch (Exception)
            {
                if (transaction != null)
                {
                    transaction.Rollback();
                }
                throw;
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
        }
    }

这里就是向两个表里面添加数据的代码 商品附表是一个集合 就是因为要存储一个订单下面多个商品的要求 这样插入进去就好一个订单号下面有多个商品
*存储到数据库里面的测试效果:
在这里插入图片描述
如果有错误请多多指教!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值