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