当前位置: 代码迷 >> ASP.NET >> 关于try-catch跟oracle事务
  详细解决方案

关于try-catch跟oracle事务

热度:1194   发布时间:2013-02-25 00:00:00.0
关于try-catch和oracle事务
在asp.net一个Button1_Click事件里,try-catch里,用了事务的一个语句
数据库是oracle
C# code
protected void Button1_Click(object sender, EventArgs e)    {        try        {            //其他代码            OracleConnection conn = new OracleConnection(ConnectionString);            OracleTransaction transaction = null;            OracleCommand cmd = null;            try            {                conn.Open();                transaction = conn.BeginTransaction();//事务开始                cmd = conn.CreateCommand();                cmd.CommandText = "insert into table1 (name) values ('abc')";                cmd.Transaction = transaction;                cmd.ExecuteNonQuery();                transaction.Commit();//提交                Response.Redirect("index.aspx");            }            catch             {                transaction.Rollback();//回滚                }            finally            {                if (cmd != null) cmd.Dispose();                if (conn != null)                {                    conn.Close();                    conn.Dispose();                }            }        }        catch (Exception ex)        {                    }    }

运行,在"transaction.Rollback();//回滚" 这里捕捉到异常:
System.InvalidOperationException: 此 OracleTransaction 已完成;不再可用。 在 System.Data.OracleClient.OracleTransaction.AssertNotCompleted() 在 System.Data.OracleClient.OracleTransaction.Rollback() 在 ceshi_oracle.Button1_Click(Object sender, EventArgs e)

如果没有Response.Redirect("index.aspx");是没有异常的

出了异常,但是程序能正常运行,这个异常怎样去掉

------解决方案--------------------------------------------------------
catch (OracleException ex)
捕获确定的异常。
  相关解决方案