六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ASP.NET中的事務(wù)處理與異常處理

[摘要]使用SQL-Transaction類和.NET提供的異常處理機制,我們就能夠以一種可靠的方式處理數(shù)據(jù)庫運行中的問題和發(fā)現(xiàn)系統(tǒng)異常。這篇小文章將解釋事務(wù)處理和異常處理的概念和用法。什么是事務(wù)?事務(wù)處理是由以一個單一的邏輯單位完成的一系列操作,它可以由一系列的SQL語句、SELECT、INSERT、U...

使用SQL-Transaction類和.NET提供的異常處理機制,我們就能夠以一種可靠的方式處理數(shù)據(jù)庫運行中的問題和發(fā)現(xiàn)系統(tǒng)異常。這篇小文章將解釋事務(wù)處理和異常處理的概念和用法。



什么是事務(wù)?
事務(wù)處理是由以一個單一的邏輯單位完成的一系列操作,它可以由一系列的SQL語句、SELECT、INSERT、UPDATE、DELETE組成,如果在該單位包含的操作執(zhí)行完畢后沒有發(fā)生錯誤,那么它對數(shù)據(jù)庫所作的改變就是永久的了。如果一旦有錯誤發(fā)生,它就不會對數(shù)據(jù)庫作任何修改或改變。
要定義一個事務(wù),需要使用Begin tran命令,在這一命令之后的任何語句都將被認為是事務(wù)的一部分。命令Commit用來完成事務(wù),并使事務(wù)對數(shù)據(jù)庫所作的修改成為永久的。Rollback命令用來取消一個事務(wù),并還原事務(wù)對數(shù)據(jù)庫所作的修改。
下面是一個事務(wù)的例子:
[SQL SERVER7.0 or SQL SERVER2000]
BEGIN TRAN
INSERT INTO PRODUCT(PRODUCTID, PRODUCTNAME) VALUES("0001", "KEYBOARD")
UPDATE PRODUCT SET PRICE=12 WHERE PRODUCTID= "0002"
IF (@ERROR>0) 
ROLLBACK
ELSE
COMMIT  



什么是異常處理?
開發(fā)一種錯誤消息處理機制、并向用戶提供有用的、清楚、有意義的信息也是編程人員的任務(wù)之一,異常處理就是能夠提供這一服務(wù)的一種機制。一旦事務(wù)失敗,服務(wù)器就會向系統(tǒng)發(fā)出一個用于幫助用戶發(fā)現(xiàn)并修復(fù)邦聯(lián)的數(shù)據(jù)庫錯誤信息。我們可以異常處理功能來獲取這種異常信息,并修復(fù)出現(xiàn)的故障。異常處理功能的用法如下所示:
[c#]
try
{
//數(shù)據(jù)庫操作命令
}
catch (Exception e)
{
?//如果有異常發(fā)生,這部分語句將被執(zhí)行
}
finally
{
?//無論是否有異常發(fā)生,這部分語句都會得到執(zhí)行

如何實現(xiàn)事務(wù)?
1、在一個存儲過程中編寫事務(wù)語句,并使用下面的控制發(fā)現(xiàn)是否有錯誤發(fā)生,返回相應(yīng)的值,互聯(lián)網(wǎng)應(yīng)用程序會根據(jù)返回的值顯示正確的和容易理解的錯誤信息。下面是一個事務(wù)的例子:
[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命令生成一個數(shù)據(jù)庫類
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等對數(shù)據(jù)庫編程非常熟悉的編程人員,他們更喜歡在存儲過程中完成異常處理功能。如果對數(shù)據(jù)庫編程不太熟悉,則可以采取下面的方法:
2、在.NET框架中,我們可以使用SqlTransaction類定義一個事務(wù)。此后,我們就可以使用commit或rollback函數(shù)控制事務(wù)。當然了,我們也可以使用.NET框架提供的異常處理功能獲取系統(tǒng)異常。下面是一個有關(guān)的例子:
[Web Applicaion in C#]
SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();
SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一個事務(wù)
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來定義事務(wù)。



主站蜘蛛池模板: 天天色视频 | 四虎影院在线 | 日韩不卡 | 天天躁夜夜躁很很躁 | 最新国产福利在线观看 | 四虎影院在线播放 | 亚洲精品美女在线观看 | 亚洲午夜国产精品 | 又粗又硬又大又爽免费视频播放 | 色亚洲欧美 | 五月婷婷在线观看 | 日韩一级大片 | 深夜在线观看免费看视频 | 日本三级韩国三级欧美三级 | 日韩欧美成人乱码一在线 | 亚洲成a人v天堂网 | 色九九视频 | 羞羞漫画弹窗 | 日韩第四页 | 亚洲系列国产系列 | 天堂视频在线 | 日韩v片 | 中文字幕在线视频第一页 | 亚洲国产日韩精品 | 亚洲高清免费观看 | 亚洲欧洲色天使日韩精品 | 日本 免费 高清 | 日产国产欧美韩国在线 | 又大又硬又爽又粗又快的视频免费 | 日本视频免费观看 | 日本免费爱爱视频 | 亚洲欧美日韩在线精品一区二区 | 三级三级三三级a级全黄 | 中文字幕日韩在线观看 | 亚洲一欧洲中文字幕在线 | 日韩精品一区二区三区免费视频 | 日本视频一区二区三区 | 性刺激免费视频观看在线观看 | 亚洲影院一区 | 欧美亚洲综合视频 | 日韩精品一区二区三区乱码 |