首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

事务处理中的两条insert 语句解决思路

2012-01-10 
事务处理中的两条insert 语句C# codepublic static bool AddOrder(string order_ID, string customer_ID,

事务处理中的两条insert 语句

C# code
    public static bool AddOrder(string order_ID, string customer_ID, string delivery_date, string remark, string door_type, string door_color, string door_H, string door_W, string shutter_type, string shutter_H, string top_front_glass_type, string bottom_behind_glass_type, string top_front_glass_style, string door_collapse, string door_glass_mode, string amount)    {        bool flag = true;        SqlConnection con = DataBase.CreateCon();        con.Open();        SqlCommand cmd = new SqlCommand();        cmd.Connection = con;        SqlTransaction Sqltrans = con.BeginTransaction();        cmd.Transaction = Sqltrans;        try        {            cmd.CommandText = "insert into [order](order_ID,customer_ID,delivery_date,remark) values(@order_ID,@customer_ID,@delivery_date,@remark)";            SqlParameter para = new SqlParameter("@order_ID", SqlDbType.VarChar, 20);            para.Value = order_ID;            cmd.Parameters.Add(para);            para = new SqlParameter("@customer_ID", SqlDbType.VarChar, 50);            para.Value = customer_ID;            cmd.Parameters.Add(para);            para = new SqlParameter("@delivery_date", SqlDbType.DateTime);            para.Value = Convert.ToDateTime(delivery_date);            cmd.Parameters.Add(para);            para = new SqlParameter("@remark", SqlDbType.VarChar, 200);            para.Value = remark;            cmd.Parameters.Add(para);            cmd.ExecuteNonQuery();            cmd.CommandText = "insert into product(order_ID,door_type,door_color,door_H,door_W,shutter_type,shutter_H,top_front_glass_type,bottom_behind_glass_type,top_front_glass_style,door_collapse,door_glass_mode,amount) values(@order_ID,@door_type,@door_color,@door_H,@door_W,@shutter_type,@shutter_H,@top_front_glass_type,@bottom_behind_glass_type,@top_front_glass_style,@door_collapse,@door_glass_mode,@amount)";            para = new SqlParameter("@order_ID", SqlDbType.VarChar, 20);            para.Value = order_ID;            cmd.Parameters.Add(para);            para = new SqlParameter("@door_type", SqlDbType.VarChar, 50);            para.Value = door_type;            cmd.Parameters.Add(para);            para = new SqlParameter("@door_color", SqlDbType.VarChar, 50);            para.Value = door_color;            cmd.Parameters.Add(para);            para = new SqlParameter("@door_H", SqlDbType.Float);            para.Value = Convert.ToDouble(door_H);            cmd.Parameters.Add(para);            para = new SqlParameter("@door_W", SqlDbType.Float);            para.Value = Convert.ToDouble(door_W);            cmd.Parameters.Add(para);            para = new SqlParameter("@shutter_type", SqlDbType.VarChar, 50);            para.Value = shutter_type;            cmd.Parameters.Add(para);            para = new SqlParameter("@shutter_H", SqlDbType.Float);            para.Value = Convert.ToDouble(shutter_H);            cmd.Parameters.Add(para);            para = new SqlParameter("@top_front_glass_type", SqlDbType.VarChar, 50);            para.Value = top_front_glass_type;            cmd.Parameters.Add(para);            para = new SqlParameter("@bottom_behind_glass_type", SqlDbType.VarChar, 50);            para.Value = bottom_behind_glass_type;            cmd.Parameters.Add(para);            para = new SqlParameter("@top_front_glass_style", SqlDbType.VarChar, 50);            para.Value = top_front_glass_style;            cmd.Parameters.Add(para);            para = new SqlParameter("@door_collapse", SqlDbType.VarChar, 50);            para.Value = door_collapse;            cmd.Parameters.Add(para);            para = new SqlParameter("@door_glass_mode", SqlDbType.VarChar, 50);            para.Value = door_glass_mode;            cmd.Parameters.Add(para);            para = new SqlParameter("@amount", SqlDbType.Int);            para.Value = amount;            cmd.Parameters.Add(para);            cmd.ExecuteNonQuery();            Sqltrans.Commit();        }        catch        {            Sqltrans.Rollback();            flag = false;        }        finally        {            con.Close();                    }        return flag;    } 



我这样写的东西问题出在哪里,每次执行都失败,注释掉两条语句中的任何一条,执行都成功

[解决办法]
分2个SqlCommand 试试
[解决办法]
第一个 cmd.ExecuteNonQuery();后cmd.Parameters.Clear()一下

[解决办法]
第一个 cmd.ExecuteNonQuery();后cmd.Parameters.Clear()一下
[解决办法]
cmd.Parameters.Clear()
[解决办法]
探讨
第一个 cmd.ExecuteNonQuery();后cmd.Parameters.Clear()一下

[解决办法]
C# code
cmd.ExecuteNonQuery();cmd = new SqlCommand(); 

热点排行