ASP.NET中的事務處理和異常處理

發表于:2007-05-25來源:作者:點擊數: 標簽:異常事務處理ASP.NET中的處理
如何實現事務? 1、在一個存儲過程中編寫事務語句,并使用下面的控制發現是否有錯誤發生,返回相應的值,互聯網應用程序會根據返回的值顯示正確的和容易理解的錯誤信息。下面是一個事務的例子: [Store Procedure] CREATE PROCEDURE PRODUCT_SAVE( AS DECLAR

  如何實現事務?

  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 /* Suclearcase/" target="_blank" >cceed 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來定義事務。

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97