刚刚写了一段代码,是订单提交的代码,要用到事物处理,不知对不对,还没来的及调试,先贴上来,让大家看看://-----------------------------开始public void InsertOrderItem(int rows, object[][] arrOrderItem)
{
int opCount = 0; //定义操作成功的次数
SqlConnection conn = db.dbConn();
conn.Open(); //打开DB连接 SqlTransaction trans = conn.BeginTransaction(); //创建事物 for (int i = 0; i <= rows - 1; i++) //给参数赋值.(rows 是原数据表中要插入的行数)
{
SqlCommand cmd = new SqlCommand("usp_OrderInsert",conn); //存储过程
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@orderNum", arrOrderItem[i][0]);
cmd.Parameters.AddWithValue("@bookID", arrOrderItem[i][1]);
cmd.Parameters.AddWithValue("@bookQuan", arrOrderItem[i][2]);
cmd.Parameters.AddWithValue("@totalPrice", arrOrderItem[i][3]); try
{
cmd.ExecuteNonQuery();
opCount++;
}
catch (SqlException ex)
{
throw ex;
}
} if (opCount == rows) //如果都成功操作,则提交
{
trans.Commit();
}
else //回滚
{
trans.Rollback();
} conn.Close(); //关闭数据连接 }//-----------------------------结束
{
int opCount = 0; //定义操作成功的次数
SqlConnection conn = db.dbConn();
conn.Open(); //打开DB连接 SqlTransaction trans = conn.BeginTransaction(); //创建事物 for (int i = 0; i <= rows - 1; i++) //给参数赋值.(rows 是原数据表中要插入的行数)
{
SqlCommand cmd = new SqlCommand("usp_OrderInsert",conn); //存储过程
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@orderNum", arrOrderItem[i][0]);
cmd.Parameters.AddWithValue("@bookID", arrOrderItem[i][1]);
cmd.Parameters.AddWithValue("@bookQuan", arrOrderItem[i][2]);
cmd.Parameters.AddWithValue("@totalPrice", arrOrderItem[i][3]); try
{
cmd.ExecuteNonQuery();
opCount++;
}
catch (SqlException ex)
{
throw ex;
}
} if (opCount == rows) //如果都成功操作,则提交
{
trans.Commit();
}
else //回滚
{
trans.Rollback();
} conn.Close(); //关闭数据连接 }//-----------------------------结束
begin transaction
set xact_abort on
insert into ...
insert into ...
commit transaction