Code代码片断(5do8)

GDI+控件线程IO流ADO.NET接口类,函数语法

新主题
c# cache与数据库映射
建立 CLR Stored Procedur...
access left join 两个
lucene.net提高查询速度
DataList 页面跳转
OnItemDataBound绑定事件
sql事务执行
SqlParameter添加数据
说话自由

首页 » .NET/C# » ADO.NET »

sql事务执行

标签: SqlTransaction SqlCommand
private static void DoTransMain(string sDbConn, ArrayList aQuery, ArrayList aPara)
        {

            using (SqlConnection objConn = new SqlConnection(sDbConn))
            {
                SqlTransaction myTrans = null;
                SqlCommand objCmd = null;
                try
                {
                    objConn.Open();
                    myTrans = objConn.BeginTransaction();
                    objCmd = new SqlCommand("", objConn);
                    objCmd.Transaction = myTrans;
                    if (aPara == null||aPara.Count==0)
                        foreach (object obj in aQuery)
                        {
                            PrepareCommand(objCmd, (string)obj, null);
                            objCmd.ExecuteNonQuery();
                        }

                    else
                    {
                        object objItem = aPara[0];
                        System.Type typeItem = objItem.GetType();
                        if (typeItem == typeof(Hashtable))
                            //call the overload version of PrepareCommand( string, Hastable) ;
                            for (int i = 0; i < aQuery.Count; i++)
                            {
                                PrepareCommand(objCmd, (string)aQuery[i], ConvertHashTabletoSqlParameterArray((Hashtable)aPara[i]));
                                objCmd.ExecuteNonQuery();
                            }

                        else if (typeItem == typeof(SqlParameter[]))
                            //call the overload version of PrepareCommand(stirng, sqlparameter[] ) ;
                            for (int i = 0; i < aQuery.Count; i++)
                            {
                                PrepareCommand(objCmd, (string)aQuery[i], (SqlParameter[])aPara[i]);
                                objCmd.ExecuteNonQuery();
                            }

                        else
                            throw new Exception("ArrayList 里包含非法的内容(不是Hashtable 或 SqlParameter数组)");
                    }

                    myTrans.Commit();

                }    //end try            
                catch (System.Exception e)
                {
                    try
                    {
                        myTrans.Rollback();
                    }
                    catch (Exception e1)
                    {
                        SetErrorTrace("DotransWithParaList(Rollback Trans Error)    " + objCmd.CommandText + "    " + e1.Message);

                    }

                    SetErrorTrace("DotransWithParaList(Commit Trans Error)    " + objCmd.CommandText + "    " + e.Message);

                    throw (e);

                }// end catch


            }//end using


        }

ccdot写于2008-9-2 9:32:45

如果愿意,请留下你观点或者感受...
称呼*
内容*
验证码*