| | | ASP.NET中的事务处理和异常处理 | | 2002-01-25·
·刘彦青编译··yesky
| 上一页 1 2 如何实现事务?
1、在一个存储过程中编写事务语句,并使用下面的控制发现是否有错误发生,返回相应的值,互联网应用程序会根据返回的值显示正确的和容易理解的错误信息。下面是一个事务的例子:
[Store Procedure] CREATE PROCEDURE PRODUCT_SAVE( AS DECLARE (@USERID CHAR(5), @LOCATION VARCHAR(50), @RETURNS INT OUTPUT ) BEGIN TRAN UPDATE ADDRESS SET LOCATION=@LOCATION WHERE USERID=@USERID IF (@@ERROR>0) BEGIN @RETURNS=-1 /* Fail to Update */ ROLLBACK END ELSE @RETURNS=0 /* Succeed to update */ COMMIT
RETURN @RETURNS
[Web Application in C#] int values; DBClass dbc=new DBClass(); // 使用new命令生成一个数据库类 values=dbc.updatedb("0001", "23 Rain Street"); //And call its function member to update record if (values==0) Lable_message.text= "Update successfully"; else Lable_message.text= "Sorry, can not update this record, please contact your DBA." | 上面的例子非常适合DBA等对数据库编程非常熟悉的编程人员,他们更喜欢在存储过程中完成异常处理功能。如果对数据库编程不太熟悉,则可以采取下面的方法:
2、在.NET框架中,我们可以使用SqlTransaction类定义一个事务。此后,我们就可以使用commit或rollback函数控制事务。当然了,我们也可以使用.NET框架提供的异常处理功能获取系统异常。下面是一个有关的例子:
[Web Applicaion in C#] SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;"); myConnection.Open();
SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务 SqlCommand myCommand = new SqlCommand(); myCommand.Transaction = myTrans;
try { myCommand.CommandText = "Update Address set location='23 rain street' where userid='0001'"; myCommand.ExecuteNonQuery(); myTrans.Commit(); Console.WriteLine("Record is udated."); } catch(Exception e) { myTrans.Rollback(); Console.WriteLine(e.ToString()); Console.WriteLine("Sorry, Record can not be updated."); } finally { myConnection.Close(); } | 需要注意的是,如果使用OleDb类而不是Sqlclient类来定义SQL命令和连接,我们就必须使用OleTransation来定义事务。
上一页 1 2 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|