读书人

关于try-catch跟oracle事务

发布时间: 2012-11-04 10:42:42 作者: rapoo

关于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)
捕获确定的异常。

读书人网 >asp.net

热点推荐