ASP.NET中的事務(wù)處理和異常處理_.Net教程
推薦:ASP.NET中文顯示之兩種解決方法作者剛開始寫ASP 程序時(shí)候碰到的第一個(gè)比較大的問題就是中文顯示問題,運(yùn)行后發(fā)現(xiàn)ASP 從數(shù)據(jù)庫(kù)中讀取出來的中文全部變成了?????????????,有點(diǎn)類似jsp中的這個(gè)頻率出現(xiàn)最高的中文顯示問題了,查
使用SQL-Transaction類和.NET提供的異常處理機(jī)制,我們就能夠以一種可靠的方式處理數(shù)據(jù)庫(kù)運(yùn)行中的問題和發(fā)現(xiàn)系統(tǒng)異常。這篇小文章將解釋事務(wù)處理和異常處理的概念和用法。
什么是事務(wù)?
事務(wù)處理是由以一個(gè)單一的邏輯單位完成的一系列操作,它可以由一系列的SQL語(yǔ)句、SELECT、INSERT、UPDATE、DELETE組成,如果在該單位包含的操作執(zhí)行完畢后沒有發(fā)生錯(cuò)誤,那么它對(duì)數(shù)據(jù)庫(kù)所作的改變就是永久的了。如果一旦有錯(cuò)誤發(fā)生,它就不會(huì)對(duì)數(shù)據(jù)庫(kù)作任何修改或改變。
要定義一個(gè)事務(wù),需要使用Begin tran命令,在這一命令之后的任何語(yǔ)句都將被認(rèn)為是事務(wù)的一部分。命令Commit用來完成事務(wù),并使事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的修改成為永久的。Rollback命令用來取消一個(gè)事務(wù),并還原事務(wù)對(duì)數(shù)據(jù)庫(kù)所作的修改。
下面是一個(gè)事務(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ā)一種錯(cuò)誤消息處理機(jī)制、并向用戶提供有用的、清楚、有意義的信息也是編程人員的任務(wù)之一,異常處理就是能夠提供這一服務(wù)的一種機(jī)制。一旦事務(wù)失敗,服務(wù)器就會(huì)向系統(tǒng)發(fā)出一個(gè)用于幫助用戶發(fā)現(xiàn)并修復(fù)邦聯(lián)的數(shù)據(jù)庫(kù)錯(cuò)誤信息。我們可以異常處理功能來獲取這種異常信息,并修復(fù)出現(xiàn)的故障。異常處理功能的用法如下所示:
[c#]
try
{
//數(shù)據(jù)庫(kù)操作命令
}
catch (Exception e)
{
?//如果有異常發(fā)生,這部分語(yǔ)句將被執(zhí)行
}
finally
{
?//無論是否有異常發(fā)生,這部分語(yǔ)句都會(huì)得到執(zhí)行
}
如何實(shí)現(xiàn)事務(wù)?
1、在一個(gè)存儲(chǔ)過程中編寫事務(wù)語(yǔ)句,并使用下面的控制發(fā)現(xiàn)是否有錯(cuò)誤發(fā)生,返回相應(yīng)的值,互聯(lián)網(wǎng)應(yīng)用程序會(huì)根據(jù)返回的值顯示正確的和容易理解的錯(cuò)誤信息。下面是一個(gè)事務(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
分享:如何實(shí)現(xiàn)在窗體和窗體之間進(jìn)行傳遞數(shù)據(jù)大家都知道aspx在同一個(gè)頁(yè)面中傳值是很容易的(如textBox1.Text等)但有時(shí)必須向另一個(gè)頁(yè)面?zhèn)髦涤靡郧癮sp的方法的確覺得不怎么樣,還要用Request.Form等東西好象又回到了從前。我這里使用一個(gè)類的
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 解析.net開發(fā)綁定到LINQ查詢的結(jié)果實(shí)例
- 在C#中建立復(fù)雜的、靈活的SQL查詢/命令
- 解析GridView中添加CheckBox并返回選中行
- asp.net中倒計(jì)時(shí)自動(dòng)跳轉(zhuǎn)頁(yè)面的實(shí)現(xiàn)方法(使用javascript)
- .NET中 關(guān)于臟讀 不可重復(fù)讀與幻讀的代碼示例
- ASP.NET MVC :實(shí)現(xiàn)我們自己的視圖引擎
- 基于 pureXML 技術(shù)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)擴(kuò)展
- 使用ASP.NET AJAX框架擴(kuò)展HTML Map控件
- ASP.NET中用healthMonitor屬性用法
- ASP.NET:設(shè)置頁(yè)面buffer引出來的問題
- 相關(guān)鏈接:
- 教程說明:
.Net教程-ASP.NET中的事務(wù)處理和異常處理
。