向一个订单里面插入多个商品
主要就是实现在购物车里面下单 ,一个订单可以对应多个商品,生成一个订单号
实现流程
- 要创建两个数据库 一个数据库是存储订单号还有总金额等等的数据 附表就是存储选择下单的商品 就相当于存储同一个订单下面的几个商品
上面这个就是数据库的设计
*在就是使用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();
}
}
}
}
这里就是向两个表里面添加数据的代码 商品附表是一个集合 就是因为要存储一个订单下面多个商品的要求 这样插入进去就好一个订单号下面有多个商品
*存储到数据库里面的测试效果:
如果有错误请多多指教!!!